我在xcode游乐场中有以下代码。
我正在使用xcode 8.2.1和swift 3.0.2
对代码的评论是操场上的输出。
var foo:String! = "foo" //"foo"
var bar:String? = "bar" //"bar"
let text = "text val = " + foo //"text val = foo"
let text2 = "text2 val = \(foo) " //"text2 val = Optional("foo") "
let text3 = "text3 val = " + bar! //"text3 val = bar"
let text4 = "text4 val = \(bar) " //"text4 val = Optional("bar") "
我无法理解为什么当我使用\(foo)和\(bar)将可选项连接到字符串时,可选的行为是相同的,当foo是一个隐式解包的可选项而bar不是。 不应该输出:
let text2 = "text2 val = \(foo) "
要
“text2 val = foo”
有人可以解释为什么表达式\(foo)不会展开吗?