swift as as?as!的用法

本文深入探讨了Swift中类型转换的概念及应用,特别是as!和as?的区别与使用场景,并通过具体的代码示例来展示如何进行向上和向下转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

as我的理解是类型转换
比如
子类继承父类
class SonTwo: Person {
    var twoName = "我是son2"
    override init() {
        super.init()
        self.name = twoName
    }
}

per3是person类型的属性接受子类的实例
let per3:Person = SonTwo()
as!用法
把per3转换成子类类型,然后输出
let p1 = per3 as! SonTwo
print("p1",p1,"per3",per3)

输出p1 <SwiftTest.SonTwo: 0x60800009f590> per3 <SwiftTest.SonTwo: 0x60800009f590>
我们发现它们的地址都是一样的,本质上还是sontwo类型的
as  as是向上转换as是向上转换
我们把per3用as转换成父类的类型然后打印
let p2 = per3 as Person
print("p2",p2)

输出:p2 <SwiftTest.SonTwo: 0x60800009f590>
可以看出它们的地址都是一样的还是sontwo类型
还可以用于数值类型转换
let num1 = 20 as Float
as?和as!用法相反,as!转换的结果必须有值不能是空的,否则报错。as?转换的结果如果没有值可以是空,另外as?和as!是向下转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值