如何理解Swift中的some("a value") 4.1
How to understand the some("a value") in Swift 4.1
这是我的 Xcode 游乐场的屏幕截图:
如您所见,str
打印为 some("Hello")
。这真的让我感到困惑,因为似乎没有关于它的文档。
有没有人对此有很好的解释some()
?
系统信息:
swift -版本:4.1.2
Xcode: 9.4.1
对于此编译器,这似乎是 print
中的一个怪癖,纯粹是推测它可能是更改隐式解包选项的语义的人工制品,请参阅 Abolish ImplicitlyUnwrappedOptional
type。
类型Optional
是,剥离基础知识,定义为:
enum Optional<Wrapped>
{
case none
case some(Wrapped)
}
通常情况下,如果您 print()
和 enum
您会得到文字,此处 none
和 some()
,但是 print()
通常将可选值打印为 nil
和 Optional()
。
似乎在 Xcode 9.4.1(至少)中隐式展开的可选值被打印为可选值但没有特殊的大小写,而 Xcode 9.2(至少)将展开的值打印为将是预期的(因为它是隐式展开的)。
也许在 9.4.1 中隐式解包选项还有其他有趣的行为。您应该在 Xcode 10 Beta and/or 中测试 9.4.1 中的错误 (bugreport.apple.com) 并查看 Apple 怎么说。
这是我的 Xcode 游乐场的屏幕截图:
如您所见,str
打印为 some("Hello")
。这真的让我感到困惑,因为似乎没有关于它的文档。
有没有人对此有很好的解释some()
?
系统信息:
swift -版本:
4.1.2
Xcode:
9.4.1
对于此编译器,这似乎是 print
中的一个怪癖,纯粹是推测它可能是更改隐式解包选项的语义的人工制品,请参阅 Abolish ImplicitlyUnwrappedOptional
type。
类型Optional
是,剥离基础知识,定义为:
enum Optional<Wrapped>
{
case none
case some(Wrapped)
}
通常情况下,如果您 print()
和 enum
您会得到文字,此处 none
和 some()
,但是 print()
通常将可选值打印为 nil
和 Optional()
。
似乎在 Xcode 9.4.1(至少)中隐式展开的可选值被打印为可选值但没有特殊的大小写,而 Xcode 9.2(至少)将展开的值打印为将是预期的(因为它是隐式展开的)。
也许在 9.4.1 中隐式解包选项还有其他有趣的行为。您应该在 Xcode 10 Beta and/or 中测试 9.4.1 中的错误 (bugreport.apple.com) 并查看 Apple 怎么说。