Swift中类型转换是否能移除所有层级的Optional?
Swift多层可选类型的解包小技巧
大伙平时写Swift肯定都用过可选绑定来解包可选类型吧?比如这种最基础的用法:
let b: String? = "bye" if let greeting = b { print(greeting) // "bye" }
但要是碰到多层可选类型的情况,普通的可选绑定就有点“不给力”了——它只能帮你拆掉一层包装:
let b: String?? = "bye" if let greeting = b { print(greeting) // "Optional(bye)" }
不过我发现了一个实用的小技巧:直接把值转换为底层类型,就能一次性移除双层可选的包装!写法也很简单:
let b: String?? = "bye" if let greeting = b as? String { print(greeting) // "bye" }
其实这个方法的适用场景还不止于此,比如面对更深层的可选类型(比如String???),同样可以用这个方式一步到位解包到原始类型,是不是挺惊喜的?
内容的提问来源于stack exchange,提问作者vacawama
相关产品推荐
相关产品推荐

