dev._.note

[Swift] zip 함수 본문

Dev/SWIFT

[Swift] zip 함수

Laena 2023. 10. 26. 17:11

👏 zip(_:_:)

공식문서 정의 : Creates a sequence of pairs built out of two underlying sequences.

 

두 개의 기본 시퀀스로 만들어진 시퀀스 쌍을 만듭니다.

 


 

알고리즘을 풀다가 두 배열의 값을 더해서 다시 배열로 만드는 문제를 풀던 도중

한번에 여러개의 배열을 사용할 수 있는 zip 함수를 알 게 되어서 정리해 보았습니다.

 

아래는 공식문서의 zip함수 사용법입니다.

func zip<P, Q>(
    _ publisher1: P,
    _ publisher2: Q
) -> Publishers.Zip3<Self, P, Q> where P : Publisher, Q : Publisher, Self.Failure == P.Failure, P.Failure == Q.Failure

 

let numbersPub = PassthroughSubject<Int, Never>()
let lettersPub = PassthroughSubject<String, Never>()
let emojiPub = PassthroughSubject<String, Never>()


cancellable = numbersPub
    .zip(lettersPub, emojiPub)
    .sink { print("\($0)") }
numbersPub.send(1)     // numbersPub: 1      lettersPub:          emojiPub:        zip output: <none>
numbersPub.send(2)     // numbersPub: 1,2    lettersPub:          emojiPub:        zip output: <none>
numbersPub.send(3)     // numbersPub: 1,2,3  lettersPub:          emojiPub:        zip output: <none>
lettersPub.send("A")   // numbersPub: 1,2,3  lettersPub: "A"      emojiPub:        zip output: <none>
emojiPub.send("😀")    // numbersPub: 2,3    lettersPub: "A"      emojiPub: "😀"   zip output: (1, "A", "😀")
lettersPub.send("B")   // numbersPub: 2,3    lettersPub: "B"      emojiPub:        zip output: <none>
emojiPub.send("🥰")    // numbersPub: 3      lettersPub:          emojiPub:        zip output: (2, "B", "🥰")


// Prints:
//  (1, "A", "😀")
//  (2, "B", "🥰")

 

Apple 공식문서

https://developer.apple.com/documentation/swift/zip(_:_:)

 

zip(_:_:) | Apple Developer Documentation

Creates a sequence of pairs built out of two underlying sequences.

developer.apple.com

 

직접 사용해본 예시

let arr = ["one", "two", "three", "four"]
let number = 1...4

for (arr, number) in zip(arr, number) {
    print("\(arr) : \(number)")
}

// "one : 1"
// "two : 2
// "three : 3"
// "four : 4"

 

let numbers = 1...Int.max
let dum = Array(zip(arr, numbers))

// dum = [("one", 1), ("two", 2), ("three", 3), ("four", 4)]

'Dev > SWIFT' 카테고리의 다른 글

[Swift] init(repeating:count:)  (0) 2023.10.27
[Swift] enumerated() 배열의 인덱스 가져오기  (0) 2023.10.26
[Swift] reverse() 와 reversed()의 차이점  (1) 2023.10.25
[Swift] Int형 정수  (0) 2023.10.25
[Swift] Array(배열) 기초문법  (0) 2023.10.25