as as! as?的使用方法和区别

as、as!、as?都是类型转换操作符

一、as

1.用来进行一般的向上类型转换

例如


class Person{}

class XiaoMing : Person{}

let xiaoMing = XiaoMing()

let person = xiaoMing as Person

在这个类里面就将子类对象xiaoMing转化为了父类Person对象并赋值给了person

2.进行数值类型限定转换,也是起到了一个说明的作用


let num1 =25 as CGFloat

let num2 =3 as Int

let num3 = (1 / 3) as CGFloat

let num4 =1.45 as Int

3.用在switch条件判断语句中


class Person{}

class XiaoMing : Person{}

class XiaoGang : Person{}

let xiaoMing = XiaoMing()

_ = XiaoGang()

let person = xiaoMing as Person

switch person {

case letming as XiaoMing:

  print (ming)

case let gang as XiaoGang:

  print (gang)

default: break

}

二、as!

进行强制向下的类型转换例如:(如果类型转换不成功会报runtime崩溃)

class Person{}

class XiaoMing : Person{}

let person : Person = XiaoMing()

let xiaoMing : XiaoMing = person as! XiaoMing

三、as?

as?如果类型转换不成功就会返回一个nil对象,不确定是否一定可以转化的时候可以使用as?


class Person{}

class XiaoMing : Person{}

let person : Person = XiaoMing()

if let xiaoMing = person as! XiaoMing{

    print("xiaoMing不为nil")

}else{

    print("xiaoMing为nil")

}

总结:as用于向上转换、数字类型转换、Switch类型判断

as!和as?用于向下类型转换。不确定成功用as?一定成功用as!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,526评论 18 399
  • 1.as (1)从派生类转换成基类,(upcasts)向上转换,即:子类向父类转换. 定义一个父类People c...
    柚子皮肤阅读 5,864评论 0 0
  • 132.转换错误成可选值 通过转换错误成一个可选值,你可以使用 try? 来处理错误。当执行try?表达式时,如果...
    无沣阅读 5,136评论 0 3
  • 《喝火令》重阳寄情 ――云水调寄重阳 雾锁清秋路,衣单冷瑟侵,满怀愁绪向谁吟。 知否重阳高处,南望寄乡音。...
    云水禅心ZLM阅读 3,449评论 0 4
  • 暮色渐凉,渔歌唱晚 盘坐河边的大桥石坝,默然 放空自己,闭目所及触手一探 隔岸的灯红酒绿,我在观火 喧闹着的,都是...
    闲狐兔阅读 2,166评论 0 0

友情链接更多精彩内容