Swift支持解构。
func pair() -> (String, String)
let (first, second) = pair()
有没有办法将可选元组解构为单个可选值?
func maybePair() -> (String, String)?
let (maybeFirst, maybeSecond) = maybePair()
maybeFirst
和maybeSecond
是可选字符串(String?
)。
答案 0 :(得分:2)
一种可能的解决方案(感谢@dfri简化我原来的尝试):
let (a, b) = maybePair().map { ($0, $1) } ?? (nil, nil)
如果maybePair()
的返回值不是nil,则关闭是
用$0
作为未包装的返回值调用,从中返回a
(String?, String?)
已创建。否则map
会返回nil
并且nil-coalescing运算符的计算结果为(nil, nil)
。