我已经看到了几个有关“将表达式从Optional
隐式强制为Any
”(例如this和this)的问题,但是我找不到一个解释之所以没有将Optional
包含在Any
中,是因为根据Apple的Swift标准库,Optional
是通用的enum
类型。
Any
参数应用于print
函数,因此提供Optional
会发出警告消息。但是,由于Optional
是枚举类型,它也不应该也是Any
类型吗?为什么Optional
作为枚举类型而不是Any
类型的一部分,使得编译器需要将Optional
转换为Any
?
答案 0 :(得分:0)
Optional
的目的是防止您意外地对nil
的变量调用方法或访问变量的属性。
您可以将Optional
分配给Any
是正确的。可以为Any
分配任何内容。但是看看现在会发生什么!我已经将可以将nil
的值转换为非可选类型Any
!如果将此值以某种方式传递给其他地方,并且其他程序员(或您将来使用)将假定它具有非nil值。
因此,这里会出现编译器警告,以提醒您您可能已经忘记拆开可选组件。