Swift将可选元组构造为单个可选值

时间:2017-09-22 17:01:46

标签: swift destructuring

Swift支持解构。

func pair() -> (String, String)
let (first, second) = pair()

有没有办法将可选元组解构为单个可选值?

func maybePair() -> (String, String)?
let (maybeFirst, maybeSecond) = maybePair()

maybeFirstmaybeSecond是可选字符串(String?)。

1 个答案:

答案 0 :(得分:2)

一种可能的解决方案(感谢@dfri简化我原来的尝试):

let (a, b) = maybePair().map { ($0, $1) } ?? (nil, nil)

如果maybePair()的返回值不是nil,则关闭是 用$0作为未包装的返回值调用,从中返回a (String?, String?)已创建。否则map会返回nil 并且nil-coalescing运算符的计算结果为(nil, nil)