强制展开的目的

Anc*_*inu 5 swift forced-unwrapping

在swift文档中,您可以找到:

if convertedNumber != nil {
    println("convertedNumber has an integer value of \(convertedNumber!).")
}
// prints "convertedNumber has an integer value of 123." 
Run Code Online (Sandbox Code Playgroud)

有了这个解释

一旦确定可选项确实包含值,就可以通过在可选项名称的末尾添加感叹号(!)来访问其基础值.感叹号有效地说:"我知道这个选项肯定有价值; 请使用它."这被称为强制解包可选的值:

好的,明白了,但它的用处是什么?如果我没有强行拆包,那就不一样了:

if convertedNumber != nil {
    println("convertedNumber has an integer value of \(convertedNumber).")
}
// prints "convertedNumber has an integer value of 123."
Run Code Online (Sandbox Code Playgroud)

感谢启发我:)

jrt*_*ton 15

如果我没有强行打开,那就不一样了

不可以.可选是另一种类型.如果您实际上在没有展开的情况下运行上面的代码(在操场上这是微不足道的),您可以立即看到差异.

可选打印为Optional(123),打开的打印为123.您无法将可选项传递给需要特定类型的内容,而无需先将其展开.

理解Optionals是完全不同的类型,而不是特定类型的特殊类型(例如,没有"可选的Int",有一个包含Int的Optional)是理解这一点的关键.如果你对更长的解释感兴趣,我已经在这里写过了.