我正在学习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
,因此强行展开不是我想要做的。我知道我可以把它隐藏在一个功能中,使它更简洁,但我真的很好奇,如果有其他选择
反正有没有让这更简洁?
答案 0 :(得分:2)
一些可能性:
#1:将军。您可以在一行上放置多个展开变量声明。
if let item = displayText, value = Double(item) {
print("\(value)")
}
#2:哈克。在您的特定情况下,您还可以将空的可选项默认为您知道的不是Double的有效字符串表示形式:
if let value = Double(item ?? "") {
print("\(value)")
}
答案 1 :(得分:0)
另一种可能性是在Optionals上使用map
:
if let value = displayText.map({ Double($0) }) {
print("\(value)")
}