관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 기본 연산자 - zip, merge, merging 본문

iOS 응용 (swift)

[iOS - swift] 기본 연산자 - zip, merge, merging

jake-kim 2022. 12. 30. 22:44

zip

  • array에서 사용하는 결합 연산자
    • 두 원소가 항상 같이 짝짓는 연산자
var array1 = [1,2,3,4,5]
var array2 = ["a", "b", "c", "d", "e"]

zip(array1, array2)
    .forEach { value1, value2 in
        print(value1, value2)
    }
/*
 1 a
 2 b
 3 c
 4 d
 5 e
 */
  • 만약 둘 중 하나가 없다면 짝짓지 못하므로 값 x
var array1 = [1,2,3,4,5]
var array2 = ["a"]

zip(array1, array2)
    .forEach { value1, value2 in
        print(value1, value2)
    }
/*
 1 a
*/

merge, merging

  • dictionary에서 사용하는 병합 연산자
    • merge는 인스턴스의 메소드이고, merging은 함수
    • merge는 직접 인스턴스의 값에 적용시키고 merging은 결과값을 리턴하는 기능
    • 클로저로 key값이 겹칠때 어떤 value를 선택할지 결정 가능
  • merge
    • 아래 예제에서는 2 key값이 겹치지만, value2를 선택하여 2 키 값의 결과에 "c"가 존재
var dict1 = [1 : "a", 2 : "b"]
var dict2 = [2 : "c", 3 : "d"]
dict1.merge(dict2) { _, value2 in
    value2
}
print(dict1)
// [1: "a", 3: "d", 2: "c"]
  • merging
    • 아래 예제에서는 2 key값이 겹치지만, value1를 선택하여 2 키 값의 결과에 "b"가 존재
var dict3 = [1 : "a", 2 : "b"]
var dict4 = [2 : "c", 3 : "d"]

let newDict = dict3.merging(dict4) { value1, _ in
    value1
}
print(newDict)
// [2: "b", 3: "d", 1: "a"]

* 참고

https://developer.apple.com/documentation/swift/dictionary/merge(_:uniquingkeyswith:)-7smbb 

 

Comments