逻辑与可选项不一致

时间:2019-07-15 15:54:37

标签: swift optional

Apple声称此表达式的计算结果有两点

let x= fubar?.boo

如果fubar存在,它将解开fubar并获取boo,这是一个真实的对象,不是一个可选的对象。如果fubar不存在,则会得到nil。但是,x本身并不是声明为可选的,因此在一种情况下,x将是可选的还是不是可选的,这在运行时确定。这似乎是一个糟糕的设计。

1 个答案:

答案 0 :(得分:2)

您的假设是错误的。编译器推断x的类型,由于使用了可选的链接,它将推断x的类型为Optional

x的类型将始终为Optional,在nilfubar的情况下,其值为nil或{{1} }封装在boo中,以防Optional不是fubar