swift - swift 总是需要强制解包吗?

标签 swift

在接下来的代码行中,我可以在不使用 ! 的情况下打印 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/

相关文章:

ios - 可以在 iOS 11.3 beta、xCode 9.3 beta、ARKit 1.5 上跟踪同一 ARReferenceImage 的多个条目

ios - SKPhysicsContact 崩溃的扩展

ios - 在核心数据中获取 NSManagedObject 上下文时找不到 objectID 错误

ios - Swift URL session 和 URL 请求不起作用

arrays - Swift 中 u_int8_t 的 Objective-C 数组

ios - 解析json并用tableview显示

ios - 按位非运算符 (~) 不适用于 SWIFT 1.2 中的 bool 值

ios - SecurityApplicationGroupIdentifier 的应用组返回 nil

ios - Swift iOS 文本转语音不适用于循环中的 "delay"

ios - 屏幕上显示的应用内购买价格(带货币)