简洁的可选展开

Concise Optional unwrapping

我正在学习Swift,我一直在尝试Optional展开并遇到这种情况:

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)")
}

另一种可能性是在 Optionals 上使用 map

if let value = displayText.map({ Double([=10=]) }) {
    print("\(value)")
}