如何理解Swift中的some("a value") 4.1

How to understand the some("a value") in Swift 4.1

这是我的 Xcode 游乐场的屏幕截图:

如您所见,str 打印为 some("Hello")。这真的让我感到困惑,因为似乎没有关于它的文档。

有没有人对此有很好的解释some()


系统信息:

对于此编译器,这似乎是 print 中的一个怪癖,纯粹是推测它可能是更改隐式解包选项的语义的人工制品,请参阅 Abolish ImplicitlyUnwrappedOptional type

类型Optional是,剥离基础知识,定义为:

enum Optional<Wrapped>
{
   case none
   case some(Wrapped)
}

通常情况下,如果您 print()enum 您会得到文字,此处 nonesome(),但是 print() 通常将可选值打印为 nilOptional()

似乎在 Xcode 9.4.1(至少)中隐式展开的可选值被打印为可选值但没有特殊的大小写,而 Xcode 9.2(至少)将展开的值打印为将是预期的(因为它是隐式展开的)。

也许在 9.4.1 中隐式解包选项还有其他有趣的行为。您应该在 Xcode 10 Beta and/or 中测试 9.4.1 中的错误 (bugreport.apple.com) 并查看 Apple 怎么说。