关于 as! 操作符
发布时间:2020-12-14 01:45:59 所属栏目:百科 来源:网络整理
导读:转自 :http://www.theswiftworld.com/2015/03/06/the-as-operator/ 在 Swift 1.2 之前, as 操作符可以进行两种类型的转换,这取决于被转换的表达式和转换到的类型。 有保证的转换 从一个类型到另一个类型的转换是否成功可以用过 Swift 的编译器来验证,例
转自 :http://www.theswiftworld.com/2015/03/06/the-as-operator/ 在 Swift 1.2 之前,
Swift 1.2 将有保证的转换和强制转换的表达方式分成了两个独立的操作符。有保证的转换仍然使用 下面的例子描述了这个改变: class Animal {} class Dog: Animal {} let a: Animal = Dog() a as Dog // 现在会报这样的错误: "'Animal is not convertible to 'Dog'; // did you mean to use 'as!' to force downcast?" a as! Dog // 强制的向下转型是允许的 let d = Dog() d as Animal // 向上转型成功 注意关于 ! 和
? 后缀的对比,还有转换操作符
as! 和
as? 的对比:
class Animal {} class Cat: Animal {} class Dog: Animal { var name = "Spot" } let dog: Dog? = nil dog?.name // 返回 nil dog!.name // 触发运行时错误 let animal: Animal = Cat() animal as? Dog // 返回 nil animal as! Dog // 触发运行时错误 从这些操作符可以很容易的记住这个模式: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |