简洁可选展开

时间:2015-10-25 15:05:38

标签: swift optional

我正在学习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,因此强行展开不是我想要做的。我知道我可以把它隐藏在一个功能中,使它更简洁,但我真的很好奇,如果有其他选择 反正有没有让这更简洁?

2 个答案:

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