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

标签 swift option-type

<分区>

我看到了几个关于“从 Optional 隐式强制转换为 Any”(例如 thisthis )的问题,但我没有找到解释了为什么 Optional 没有“包含”在 Any 中的原因,因为根据 Apple 的 Swift 标准库,Optional 是一个通用的 enum 类型。

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

最佳答案

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

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

因此,编译器警告提醒您您可能忘记解包您的可选值。

关于swift - 为什么有必要将 Optional 强制转换为 Any?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604390/

相关文章:

ios - iOS中有没有办法设置图像 "outline"的颜色?

java - 使用 Optional 时遇到 NullPointerException

ios - 在委托(delegate)内部访问时 IBOutlet 值为零

ios - 如何将 PFObject 转换为字符串? - Swift 1.2 Xcode 6.4 和 Parse.com -

swift - 构造函数调用的可选链接?

Swift 枚举复杂的原始值

ios - postman 请求到 Alamofire 请求

ios - AppDelegate 的 'downcasting' 会失败吗?

google-app-engine - 我可以在 GAE 数据存储模型中拥有可选属性吗?

java - 如何将字符串文本添加到 orElse 和 .map