在 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."
谢谢你启发我:)
如果我不强行拆开包装,情况就不一样了
不。Optional 是一种不同的类型。如果您实际上在不展开的情况下运行上面的代码(这在操场上是微不足道的),您可以立即看到差异。
可选打印为Optional(123)
,展开的打印件为123
。如果不先将其解包,则无法将可选值传递给需要特定类型的内容。
理解Optional是一种完全不同的类型,而不是特定类型的专门类型(例如,没有“可选的Int”,有一个包含Int的Optional)是理解这一点的关键。我已经写过相关内容here http://commandshift.co.uk/blog/2014/06/11/understanding-optionals-in-swift/如果您对更长的解释感兴趣。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)