与 Optionals 的逻辑不一致
Logical inconsistency with Optionals
Apple 声称此表达式的计算结果为两件事
let x= fubar?.boo
如果 fubar
存在,它会解包 fubar
并获取 boo
假设它是一个真实的对象而不是可选的。如果 fubar
不存在,你会得到 nil
。但是 x
本身并未声明为可选,因此在一种情况下 x
要么是可选的,要么不是,这是在运行时确定的。这似乎是一个糟糕的设计。
你的假设是错误的。编译器推断 x
的类型,并且由于使用了可选链接,它将推断 x
的类型为 Optional
.
x
的类型将始终是 Optional
,其值是 nil
(如果 fubar
是 nil
或 [= 的值18=] 包裹在 Optional
中以防 fubar
不是 nil
.
Apple 声称此表达式的计算结果为两件事
let x= fubar?.boo
如果 fubar
存在,它会解包 fubar
并获取 boo
假设它是一个真实的对象而不是可选的。如果 fubar
不存在,你会得到 nil
。但是 x
本身并未声明为可选,因此在一种情况下 x
要么是可选的,要么不是,这是在运行时确定的。这似乎是一个糟糕的设计。
你的假设是错误的。编译器推断 x
的类型,并且由于使用了可选链接,它将推断 x
的类型为 Optional
.
x
的类型将始终是 Optional
,其值是 nil
(如果 fubar
是 nil
或 [= 的值18=] 包裹在 Optional
中以防 fubar
不是 nil
.