为什么必须从“可选”强制为“任意”?

时间:2019-02-09 08:04:57

标签: swift optional

我已经看到了几个有关“将表达式从Optional隐式强制为Any”(例如thisthis)的问题,但是我找不到一个解释之所以没有将Optional包含在Any中,是因为根据Apple的Swift标准库,Optional是通用的enum类型。

Any参数应用于print函数,因此提供Optional会发出警告消息。但是,由于Optional是枚举类型,它也不应该也是Any类型吗?为什么Optional作为枚举类型而不是Any类型的一部分,使得编译器需要将Optional转换为Any

1 个答案:

答案 0 :(得分:0)

Optional的目的是防止您意外地对nil的变量调用方法或访问变量的属性。

您可以将Optional分配给Any是正确的。可以为Any分配任何内容。但是看看现在会发生什么!我已经将可以将nil的值转换为非可选类型Any!如果将此值以某种方式传递给其他地方,并且其他程序员(或您将来使用)将假定它具有非nil值。

因此,这里会出现编译器警告,以提醒您您可能已经忘记拆开可选组件。