swift as ?

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!是向下转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值