Swift 简明可选展开
我正在学习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
可选展开,遇到了以下情况:
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)")
}
我不知道地图,有趣的是,我还得多读一些。