为什么有必要将 Optional 强制转换为 Any?

Why is it necessary to coerce from Optional to Any?

我看到了几个关于 "expression implicitly coerced from an Optional to Any" 的问题(例如 this and ),但我没有找到一个解释 Optional 不是 "included" 的原因 Any,因为根据 Apple 的 Swift 标准库,Optional 是通用的 enum 类型。

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

Optional 的目的是防止您意外调用方法或访问 nil.

变量的属性

你是对的 Optional 可以分配给 Any。任何东西都可以分配给 Any。但是看看现在发生了什么!我把一个可以nil的值改成了非可选类型Any!如果以某种方式将该值传递给其他地方,并且其他一些程序员(或将来的您)会认为它具有非零值。

因此,编译器警告是为了提醒您,您可能忘记了对可选类型进行解包。