swift type casting

/* 

  type casting

 */


class Car{

    var name:String

    init(name:String){

        self.name=name

    }

}


class SportCar:Car{

    var speed:Int

    init(speed:Int,name:String){

        self.speed=speed //init self first then init super

        super.init(name:name)

    }

}


class BusinessCar:Car{

    var seats:Int

    init(name:String,seats:Int) {

        self.seats=seats

        super.init(name: name)

    }

}


var number1=0

var number2=0


var garage=[

    SportCar(speed:100,name:"xx"),

    BusinessCar(name:"xx",seats:6),

    SportCar(speed:200,name:"xx"),

    BusinessCar(name:"xx",seats:9),

    SportCar(speed:300,name:"xx"),

    BusinessCar(name:"xx",seats:16),

    ]


for i in garage{

    if i is SportCar{

        print("it's a sport car")

        number1 += 1

    }else if i is BusinessCar{

        print("it's a business car")

        number2 += 1

    }

}


for i in garage{

    if let a=i asSportCar{

        print("it's a sp")

    } else if let a=i asBusinessCar{

        print("it's a b")

    }

}



/*

    Any represents any type including function type

    AnyObject represents any Class type

 */


var a=[Any]()


a.append(12)

a.append(12.0)

a.append("asd")

a.append((2,"daf"))

a.append(["d","df"])

a.append({(a:Int,b:Int)->Int in return a+b})


for i in a{

    switch i {

    case 12 as Int:

        print("12 is a int here")

    case 12 as Double:

        print("12 is a double here")

    case let someFunc as (AnyObject,AnyObject)->Int:

        print("function with AnyObject is identified")

    case let someFunc as (Int,Int)->Int:

        print("function with Any is identified")


    default:

        print("nothing")

    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值