在swift文档中,您可以找到:
if convertedNumber != nil {
println("convertedNumber has an integer value of \(convertedNumber!).")
}
// prints "convertedNumber has an integer value of 123."
有了这个解释
一旦确定可选项确实包含值,就可以通过在可选项名称的末尾添加感叹号(!)来访问其基础值。感叹号有效地说:“我知道这个选项肯定有价值;请使用它。“这被称为强制解包可选的值:
好的,明白了,但它的用处是什么?如果我没有像下面这样强行解开,那就不一样了:
if convertedNumber != nil {
println("convertedNumber has an integer value of \(convertedNumber).")
}
// prints "convertedNumber has an integer value of 123."
感谢启发我:)
答案 0 :(得分:15)
如果我没有强行解包,那就不一样了
没有。可选是一种不同的类型。如果您实际上在没有展开的情况下运行上面的代码(这在操场上是微不足道的),您可以立即看到差异。
可选打印为Optional(123)
,打开的打印为123
。您无法将可选项传递给需要特定类型的内容,而无需先将其展开。
理解Optionals是完全不同的类型,而不是特定类型的特殊类型(例如,没有"可选的Int",有一个包含Int的Optional)是理解这一点的关键。如果您对更长的解释感兴趣,我已经写了here。
答案 1 :(得分:2)
或者,您可以有条件地打开可选的
if let convertedNumber = <some optional> {
// If the optional contains a value, then convertedNumber is now the unwrapped value.
println("convertedNumber has an integer value of \(convertedNumber).")
}