swift AS , AS?, AS!

类型转换

AS , AS?, AS!

as :类型一致或者子类 左侧<=右侧

class Animal {}

class Dog: Animal {}

let d = Dog()

d as Animal

as! :父类强转子类 左侧 >=右侧

class Animal {}

class Dog: Animal {}

let a: Animal = Dog()

a as! Dog

as? : 转换失败返回nil

class Animal {}

class Dog: Animal {}

class Cat: Animal {}

let animal: Animal = Cat()

animal as! Dog///失败

animal as? Dog///成功但是为nil

声明时候的!跟?的区别

常量/变量声明的时候类型后面带有?或者!为可选类型 Swift会自动将该变量初始化为nil

!:隐式展开可选项,该变量操作的时候都会隐式的在操作前添加一个!表面改变量不为nil 需要解包后使用。

? :单纯的告诉Swift这是Optional的,如果没有初始化就默认为nil

! :可选值的强制展开。

associatedtype <泛型>

从字面上来理解,就是相关类型。意思也就是被associatedtype关键字修饰的变量,相当于一个占位符,而不能表示具体的类型。具体的类型需要让实现的类来指定。

你可能感兴趣的:(swift AS , AS?, AS!)