Swift 类型的检査与转换(is,as,AnyObject,Any)

本文介绍了Swift中用于类型检查和转换的关键操作符`is`和`as`,以及特殊类型别名`AnyObject`和`Any`的用法。`is`用于检测实例是否属于某个类的子类型,返回布尔值。`as`分为可选格式`as?`和强制解封格式`as`,用于实例在子类和父类之间的转换。`AnyObject`代表任何类类型的实例,`Any`则可以表示任何类型。建议尽量使用明确的类型而非`Any`和`AnyObject`以提高代码可读性和安全性。
摘要由CSDN通过智能技术生成

is和as

类型转换 可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。

类型转换在 Swift 中使用 isas 操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。

直接上代码,首先定义几个类:

//类型的检査与转换
class Fruit{

    let placeOfOriginal: String
    init(placeOfOriginal: String){
        self.placeOfOriginal = placeOfOriginal
    }
}

class Apple:Fruit{

    func desCription(){
        print("苹果的原产地\(placeOfOriginal)")
    }
}

class Orange:Fruit{
 
    func desCription(){
        print("橘子的原产地\(placeOfOriginal)")
    }
}

func testOne(){
    
        //定义了五个水果
        let apple1 = Apple(placeOfOriginal: "北京")
        let apple2 = Apple(placeOfOriginal: "上海")
        let apple3 = Apple(placeOfOriginal: "深圳")
        let orange1 = Orange(placeOfOriginal: "成都")
        let orange2 = Orange(placeOfOriginal: "广州")
        
        let basket = [apple1,apple2,apple3,orange1,orange2]
        
        for fruit in basket{
        
            //1:如果想要使用子类Apple和Orange的方法那么久必须使用 as操作符进行类型转换,转换为对应的类型.
            if let apple = fruit as? Apple{
                apple.desCription()
            }else if let orange = fruit as? Orange{
                orange.desCription()
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值