Swfit 中 ? ! as as! as ? 的一些笔记

【关于?】

可选类型(Optional),没有初始值的属性

例:var name: String? nil

var name: String? =  “Text” String

Optional其实是个enum,里面有None和Some两种类型。其实所谓的nil就是Optional.None , 非nil就是Optional.Some,然后会通过Some(T)包装(wrap)原始值。这也是为什么在使用Optional的时候要拆包(从enum里取出来原始值)

【关于!】

操作一个可选类型的变量,进行强解包的时候用到。如果有值就会得到变量的值,如果为nil那么程序就会crash

【as的定义】:有保证的转换

1、向上转换,转成自己的父类型

2、数据类型转换

3、switch语句中进行模式匹配

【as!的定义】 强制类型转换,向下转型时使用。

class Animal {}

class Cat: Animal {}

let animal: Animal = Cat()

let cat = animal as! Cat

【as?的定义】  同as! 转换失败返回nil,不会报错

【??的定义】 取两个中不为nil的

你可能感兴趣的:(Swfit 中 ? ! as as! as ? 的一些笔记)