Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Given array of 2-tuples, return two arrays
- func unzip<T, U>(array: [(T, U)]) -> ([T], [U]) {
- var t = Array<T>()
- var u = Array<U>()
- for (a, b) in array {
- t.append(a)
- u.append(b)
- }
- return (t, u)
- }
- // Given sequence of 2-tuples, return two arrays
- func unzip<T, U>(sequence: SequenceOf<(T, U)>) -> ([T], [U]) {
- var t = Array<T>()
- var u = Array<U>()
- for (a, b) in sequence {
- t.append(a)
- u.append(b)
- }
- return (t, u)
- }
- // Given array of 3-tuples, return three arrays
- func unzip3<T, U, V>(array: [(T, U, V)]) -> ([T], [U], [V]) {
- var t = Array<T>()
- var u = Array<U>()
- var v = Array<V>()
- for (a, b, c) in array {
- t.append(a)
- u.append(b)
- v.append(c)
- }
- return (t, u, v)
- }
- // Given sequence of 3-tuples, return three arrays
- func unzip3<T, U, V>(sequence: SequenceOf<(T, U, V)>) -> ([T], [U], [V]) {
- var t = Array<T>()
- var u = Array<U>()
- var v = Array<V>()
- for (a, b, c) in sequence {
- t.append(a)
- u.append(b)
- v.append(c)
- }
- return (t, u, v)
- }
- let elements = [(0, "Zero"), (1, "One"), (2, "Two")]
- let (numbers, strings) = unzip(elements)
- println("numbers = \(numbers)")
- println("strings = \(strings)")
- // numbers = [0, 1, 2]
- // strings = ["Zero", "One", "Two]
- let elements3 = [(0, "Zero", "A"), (1, "One", "B"), (2, "Two", "C")]
- let (numbers3, strings3, letters3) = unzip3(elements3)
- println("numbers3 = \(numbers3)")
- println("strings3 = \(strings3)")
- println("letters3 = \(letters3)")
- // numbers3 = [0, 1, 2]
- // strings3 = ["Zero", "One", "Two]
- // letters3 = ["A", "B", "C"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement