为什么有必要将 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
!如果以某种方式将该值传递给其他地方,并且其他一些程序员(或将来的您)会认为它具有非零值。
因此,编译器警告是为了提醒您,您可能忘记了对可选类型进行解包。
我看到了几个关于 "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
!如果以某种方式将该值传递给其他地方,并且其他一些程序员(或将来的您)会认为它具有非零值。
因此,编译器警告是为了提醒您,您可能忘记了对可选类型进行解包。