打印对象的描述会使lldb在对象的描述前面使用关键字“Some”(这里我是一个可选的字符串):
(lldb) po someString
Optional<String>
- Some: "Hello Jupiter"
此关键字的含义是什么;为什么会这样?
答案 0 :(得分:10)
Optional
是一个enum
,有两个案例none
和some(wrapped)
:
enum Optional<Wrapped> {
case some(Wrapped)
case none
}
正如您所看到的,Optional
的值为Some
,具有关联值(Optional
包裹的值)或None
。 Optional.None
实际上是nil
的含义。
在这种情况下,调试器会告诉您someString
是Optional<String>
(a.k.a。String?
),其值为Optional.Some("Hello Jupiter")
。它不是Optional.None
,因此它不是nil
。
在Swift 3之前,这些案例都是大写的,Some
和None
。