在接下来的代码行中,我可以在不使用 !
的情况下打印 vint
值,但是 vint 是一个可选值(因为 toInt
函数返回一个可选值)。
let vstr = "123"
let vint = str.toInt()
if vint{
println(vint) // It works... why?
}
不应该吗?
println(vint!)
最佳答案
Swift 的标准库定义了这个扩展:
extension T? : Printable {
var description: String { get }
}
为所有可选值实现 Printable 协议(protocol)。我们看不到实现,但根据它的行为,如果可选的是 nil
,它似乎会打印“nil”,否则它会打印包含的实例。
关于swift - swift 总是需要强制解包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24232193/