Xcode控制台中的"Some"关键字是什么意思?

ff1*_*f10 9 xcode lldb swift

打印对象的描述会使lldb在对象的描述前面使用关键字"Some"(这里我是一个可选的字符串):

(lldb) po someString
Optional<String>
 - Some: "Hello Jupiter"
Run Code Online (Sandbox Code Playgroud)

这个关键字是什么意思; 为什么会这样?

Ale*_*ica 11

Optional是一个enum有两种情况,none以及some(wrapped):

enum Optional<Wrapped> {
    case some(Wrapped)
    case none
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Optional要么具有值Some,具有关联值(Optional包装的值),或者None.Optional.None实际上就是这个意思nil.

在这种情况下,调试器告诉你这someString是一个Optional<String>(aka String?),其值为Optional.Some("Hello Jupiter").它不是Optional.None,因此它不是nil.

在Swift 3之前,这些案例都是大写的,Some而且None.