swift – 是否可以将Any转换为Optional?
发布时间:2020-12-14 05:03:32 所属栏目:百科 来源:网络整理
导读:假设我有一段这样的代码: let x: Int? = 10 let y: Any = x 现在我想把y转换成Int?: let z = y as Int? // Error: Cannot downcast from 'Any' to a more optional type 'Int?' 这是不可能还是有另一种方式? 解决方法 对于Swift 2.0,您可以使用以下内容
假设我有一段这样的代码:
let x: Int? = 10 let y: Any = x 现在我想把y转换成Int?: let z = y as Int? // Error: Cannot downcast from 'Any' to a more optional type 'Int?' 这是不可能还是有另一种方式? 解决方法
对于Swift 2.0,您可以使用以下内容:
let x: Int? = 10 let y: Any = x let z = Mirror(reflecting: y).descendant("Some") as? Int 或者作为一个功能: func castToOptional<T>(x: Any) -> T? { return Mirror(reflecting: x).descendant("Some") as? T } let x: Int? = 10 let y: Any = x let z: Int? = castToOptional(y) 或者你可以这样做,如果你不喜欢反射: func castToOptional<T>(x: Any) -> T { return x as! T } let x: Int? = 10 let y: Any = x let z: Int? = castToOptional(y) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 让Oracle客户端在Windows 7 RC上运行
- c# – 在每个函数中使用语句 – >通过适当的清理转换为类字
- ssh整合application.xml文件的整合
- 尝试使用Linq解析XML树到XML(C#)
- ajax – 如何在数据表中使用PrimeFaces p:droppable?
- MFC操作XML配置文件的两种方式:DOM 和 MSXML
- ruby-on-rails – 在Rails中运行rake测试时排除外部gem警告
- u-boot-2014.10移植第27天----nand flash启动(五)
- sqlite嵌入式数据库在linux下的编译
- Dart 中的 const final static