swift - 为什么有必要从 Optional 强制转换为 Any?
问题描述
我已经看到了几个关于“表达式从一个隐式强制Optional
转换到Any
”(例如this和this)的问题,但我没有找到一个解释为什么Optional
不“包含”在 中的原因Any
,因为根据 Apple 的 Swift 标准库,Optional
是泛型enum
类型。
Any
该print
函数需要参数,因此提供Optional
会给出警告消息。但是,既然Optional
是枚举类型,那么它不应该也是一种Any
类型吗?为什么Optional
作为枚举类型,不是Any
编译器需要转换Optional
为的类型的一部分Any
?
解决方案
的目的Optional
是防止您意外调用方法或访问变量的属性nil
。
你是对的,Optional
可以分配到Any
。任何东西都可以分配给Any
. 但是看看现在发生了什么!我已经将一个可以nil
转换为非可选类型的值Any
!如果以某种方式将此值传递给其他地方并且其他一些程序员(或将来的您)会假设它具有非零值。
因此,编译器警告会提醒您,您可能忘记了打开选项。
推荐阅读
- c++ - 在 Windows/Visual Studio 上的 C++ 中运行时编译函数的简单有效方法是什么?
- android - 应用程序在前台时通知消息似乎为空
- android - 如何使用 Glide 从 Firebase 存储中获取视频缩略图?
- jquery - 将项目置于列表顶部
- sql - DB2 for z/OS SQL:不允许覆盖用户值
- android-studio - Flutter项目中的AaptProcess
- vb.net - Visual Basic 中的多个升序面板
- c# - 无法单击带有样式的日历日期
- jenkins - 如何将 Jenkins 构建历史从一台服务器复制到另一台服务器?
- python - Flask 和 HTML:重定向 json 响应以显示在同一页面的底部,而不是在单独的页面上显示响应