概述
as我的理解是类型转换
比如
子类继承父类
[color=#FF0000]class SonTwo: Person {
var twoName = "我是son2"
override init() {
super.init()
self.name = twoName
}
}[/color]
per3是person类型的属性接受子类的实例
[color=#FF0000]let per3:Person = SonTwo()[/color]
[size=4][color=#FF0000]as!用法[/color][/size]
把per3转换成子类类型,然后输出
[color=#FF0000]let p1 = per3 as! SonTwo
print("p1",p1,"per3",per3)[/color]
输出:[color=#FF0000]p1 <SwiftTest.SonTwo: 0x60800009f590> per3 <SwiftTest.SonTwo: 0x60800009f590>[/color]
我们发现它们的地址都是一样的,本质上还是sontwo类型的
[size=4][color=#FF0000]asas是向上转换[/color][/size]as是向上转换
我们把per3用as转换成父类的类型然后打印
[color=#FF0000]let p2 = per3 as Person
print("p2",p2)[/color]
输出:p2 <SwiftTest.SonTwo: 0x60800009f590>
可以看出它们的地址都是一样的还是sontwo类型
还可以用于数值类型转换
let num1 = 20 as Float
as?和as!用法相反,as!转换的结果必须有值不能是空的,否则报错。as?转换的结果如果没有值可以是空,另外as?和as!是向下转换。
最后
以上就是可靠翅膀为你收集整理的swift as ?的全部内容,希望文章能够帮你解决swift as ?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复