1、as
僅當(dāng)一個(gè)值的類型在運(yùn)行時(shí)(runtime)和as模式右邊的指定類型一致善茎、或者是該類型的子類 的情況下,才會(huì)匹配這個(gè)值。如果匹配成功痛悯,被匹配的值的類型被轉(zhuǎn)換成as模式左邊指定的模式。
as 應(yīng)用條件有2種情況:
(1)重窟、和“as”右邊類型一致
(2)载萌、是右邊類型的子類
class ball {}
class football:ball {}
let a = ball()
a as ball //a和右面的ball類型一致,編譯成功
let f = football()
f as ball // d 是右面ball的子類巡扇,編譯成功
2扭仁、as!
如果碰到as左邊類型是右邊類型的父類霎迫,則會(huì)報(bào)錯(cuò)斋枢!as不可以用來父類轉(zhuǎn)子類,這個(gè)時(shí)候可以用強(qiáng)轉(zhuǎn) as知给!
class ball {}
class football:ball {}
let a = ball()
a as ball // 編譯成功
let f = football()
a as football // 編譯報(bào)錯(cuò)
編譯器會(huì)提醒你用as瓤帚!
3、as涩赢?
as戈次?相當(dāng)于optional類型,如果強(qiáng)轉(zhuǎn)失敗的話會(huì)返回nil筒扒。
class ball {}
class football:ball {}
class basketball:ball {}
let aball:ball = basketball()
aball as? football // 取到的是nil
aball as! football //運(yùn)行時(shí)報(bào)錯(cuò)
參考文章:http://blog.csdn.net/h454036111/article/details/49151933