在Swift闭包中解压缩嵌套元组

时间:2015-10-27 16:25:23

标签: swift

如果你有:

(gdb) run
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400aea in bar(int) ()
Missing separate debuginfos, use: debuginfo-install glibc-2.17-78.el7.x86_64 libgcc-4.8.3-9.el7.x86_64 libstdc++-4.8.3-9.el7.x86_64
(gdb) bt
#0  0x0000000000400aea in bar(int) ()
#1  0x0000000000400b95 in main ()
(gdb)

你可以这样做:

let array = [(1, 2)]

如果您有以下内容:

array.map({ first, second in ... })

如何解压缩?

let array = [((1, 2), (3, 4))]

这些都没有编译。

1 个答案:

答案 0 :(得分:0)

这样可行,但不是很漂亮

let array = [((1, 2), (3, 4))]

array.map({ a, b in
    return a.0 + a.1 + b.0 + b.1
})

这可能会好一些,但它仍然是嵌套的

let array = [((1, 2), (3, 4))]

array.map({ (a:(first:Int, second:Int), b:(first:Int, second:Int)) in
    return a.first + a.second + b.first + b.second
})

您可以使用map将它们缩减为元组,然后分配值

array.map{($0.0,$0.1,$1.0,$1.1)}.map { (first:Int, second:Int, third:Int, forth:Int) in }