Swift 简明可选展开

Swift 简明可选展开,swift,optional,Swift,Optional,我正在学习Swift,我一直在尝试可选展开,遇到了以下情况: let displayText: String? if let item = displayText { if let value = Double(item) { print("\(value)") } else { print("Didn't happen") } } else { print("Didn't happen") } 这似乎是可能的: let dis

我正在学习Swift,我一直在尝试
可选
展开,遇到了以下情况:

let displayText: String?

if let item = displayText {
    if let value = Double(item) {
        print("\(value)")
    } else {
        print("Didn't happen")
    }
} else {
    print("Didn't happen")
}
这似乎是可能的:

let displayText: String?

if let item = Double(displayText) {
    print("\(item)")
} else {
    print("Didn't happen")
}
在我的例子中,
displayText
可能是
nil
,所以强制展开不是我想要做的。我知道我可以将其隐藏在函数中以使其更简洁,但我真的很好奇是否还有其他选项。
有没有办法让这更简洁?

有几种可能性:

#1:将军。可以在一行上放置多个展开变量声明

if let item = displayText, value = Double(item) {
    print("\(value)")
}
#2:黑客。在您的特定情况下,您还可以将空可选值默认为Double的有效字符串表示形式:

if let value = Double(item ?? "") {
    print("\(value)")
}

另一种可能是在选项上使用
map

if let value = displayText.map({ Double($0) }) {
    print("\(value)")
}

我不知道地图,有趣的是,我还得多读一些。