在Xcode 8发行版中,我发现了一个奇怪的场景。
这是代码,
let implicitlyUnwrappedOptionalString: String! = "implicitlyUnwrappedOptionalString"
let foo = implicitlyUnwrappedOptionalString
print(implicitlyUnwrappedOptionalString)
print(foo)
结果如下:
implicitlyUnwrappedOptionalString
Optional("implicitlyUnwrappedOptionalString")
上面的这些表明,当我为没有显式类型的变量分配一个隐式解包的可选内容时,该类型将被推断为一个可选类型,而不是其最初的类型,也就是隐式解包的可选类型。
我的Xcode已更新至8。任何人都可以验证Xcode 7.x中的行为吗?
更改是由于Swift版本更改还是Xcode?
最佳答案
这是SE-0054 Abolish ImplicitlyUnwrappedOptional type的结果,它已在Swift 3中实现。该提案的摘录(添加了重点):
在您的情况下,作业
let foo = implicitlyUnwrappedOptionalString
如示例
foo
中所示,使let y = x
成为强大的可选内容从提案中。
您可以通过添加显式类型注释使
foo
成为IUOlet foo: String! = implicitlyUnwrappedOptionalString
但通常您应该尝试摆脱代码中的IUO,
如同一提案中所述:
关于ios - Xcode 8中隐式展开的可选分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39633481/