为什么在Swift 3中使用字符串插值时,隐式解包的选项不会被解包?
示例:在操场中运行以下代码
var str: String!
str = "Hello"
print("The following should not be printed as an optional: \(str)")
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
The following should not be printed as an optional: Optional("Hello")
Run Code Online (Sandbox Code Playgroud)
当然我可以用+运算符连接字符串,但我在我的应用程序中几乎无处不在使用字符串插值,现在因为这个而无法工作(bug?).
这甚至是一个bug还是他们故意用Swift 3改变这种行为?
在Xcode 8发布版本中,我发现了一个奇怪的场景.
这是代码,
let implicitlyUnwrappedOptionalString: String! = "implicitlyUnwrappedOptionalString"
let foo = implicitlyUnwrappedOptionalString
print(implicitlyUnwrappedOptionalString)
print(foo)
Run Code Online (Sandbox Code Playgroud)
这是结果:
implicitlyUnwrappedOptionalString
Optional("implicitlyUnwrappedOptionalString")
Run Code Online (Sandbox Code Playgroud)
上面的这些表明,当我将一个隐式展开的可选项分配给一个没有显式类型的变量时,该类型将被推断为一个可选类型,而不是它最初的类型,也就是隐式展开的可选类型.
我的Xcode已更新为8.任何人都可以验证Xcode 7.x中的行为吗?
更改是由于Swift版本更改还是Xcode?