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

Ste*_*Kuo 5 destructuring swift

Swift 支持解构。

func pair() -> (String, String)
let (first, second) = pair()
Run Code Online (Sandbox Code Playgroud)

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

func maybePair() -> (String, String)?
let (maybeFirst, maybeSecond) = maybePair()
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*n R 2

一个可能的解决方案(感谢@dfri简化了我最初的尝试):

let (a, b) = maybePair().map { ($0, $1) } ?? (nil, nil)
Run Code Online (Sandbox Code Playgroud)

如果 from 的返回值maybePair()不为 nil,则将调用闭包$0作为展开的返回值,并从中 (String?, String?)创建 a。否则map返回nil ,并且零合并运算符的计算结果为(nil, nil)