Swift - as厅缺、as!、as?三種類型轉(zhuǎn)換操作符使用詳解(附樣例)

Swift - as宴偿、as!湘捎、as?三種類型轉(zhuǎn)換操作符使用詳解(附樣例)

總結(jié):
? 表示可選值, 窄刘!表示轉(zhuǎn)換成功窥妇,肯定有值

應(yīng)網(wǎng)友要求,我這里總結(jié)了下 as娩践、as!活翩、as? 這三種類型轉(zhuǎn)換操作符的異同烹骨,以及各自的使用場(chǎng)景。

1纱新,as使用場(chǎng)合

(1)從派生類轉(zhuǎn)換為基類展氓,向上轉(zhuǎn)型(upcasts)

class Animal {}
class Cat: Animal {}
let cat = Cat()
let animal = cat as Animal

(2)消除二義性,數(shù)值類型轉(zhuǎn)換

let num1 = 42 as CGFloat
let num2 = 42 as Int
let num3 = 42.5 as Int
let num4 = (42 / 2) as Double

(3)switch 語(yǔ)句中進(jìn)行模式匹配

如果不知道一個(gè)對(duì)象是什么類型脸爱,你可以通過switch語(yǔ)法檢測(cè)它的類型遇汞,并且嘗試在不同的情況下使用對(duì)應(yīng)的類型進(jìn)行相應(yīng)的處理。

switch animal {
case let cat as Cat:
    print("如果是Cat類型對(duì)象簿废,則做相應(yīng)處理")
case let dog as Dog:
    print("如果是Dog類型對(duì)象空入,則做相應(yīng)處理")
default: break
}

2,as!使用場(chǎng)合

向下轉(zhuǎn)型(Downcasting)時(shí)使用族檬。由于是強(qiáng)制類型轉(zhuǎn)換歪赢,如果轉(zhuǎn)換失敗會(huì)報(bào) runtime 運(yùn)行錯(cuò)誤。

class Animal {}
class Cat: Animal {}
let animal :Animal  = Cat()
let cat = animal as! Cat

3单料,as?使用場(chǎng)合

as? 和 as! 操作符的轉(zhuǎn)換規(guī)則完全一樣埋凯。但 as? 如果轉(zhuǎn)換不成功的時(shí)候便會(huì)返回一個(gè) nil 對(duì)象。成功的話返回可選類型值(optional)扫尖,需要我們拆包使用白对。
由于 as? 在轉(zhuǎn)換失敗的時(shí)候也不會(huì)出現(xiàn)錯(cuò)誤,所以對(duì)于如果能確保100%會(huì)成功的轉(zhuǎn)換則可使用 as!换怖,否則使用 as?

let animal:Animal = Cat()
 
if let cat = animal as? Cat{
    print("cat is not nil")
} else {
    print("cat is nil")
}

原文出自:www.hangge.com 轉(zhuǎn)載請(qǐng)保留原文鏈接:http://www.hangge.com/blog/cache/detail_1089.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甩恼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沉颂,更是在濱河造成了極大的恐慌条摸,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铸屉,死亡現(xiàn)場(chǎng)離奇詭異钉蒲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抬探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門子巾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人小压,你說我怎么就攤上這事线梗。” “怎么了怠益?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵仪搔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蜻牢,道長(zhǎng)烤咧,這世上最難降的妖魔是什么偏陪? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮煮嫌,結(jié)果婚禮上笛谦,老公的妹妹穿的比我還像新娘。我一直安慰自己昌阿,他們只是感情好饥脑,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懦冰,像睡著了一般灶轰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刷钢,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天笋颤,我揣著相機(jī)與錄音,去河邊找鬼内地。 笑死伴澄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阱缓。 我是一名探鬼主播秉版,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼茬祷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起并蝗,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤祭犯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滚停,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沃粗,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年键畴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了最盅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡起惕,死狀恐怖涡贱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惹想,我是刑警寧澤问词,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站嘀粱,受9級(jí)特大地震影響激挪,放射性物質(zhì)發(fā)生泄漏辰狡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一垄分、第九天 我趴在偏房一處隱蔽的房頂上張望宛篇。 院中可真熱鬧,春花似錦薄湿、人聲如沸叫倍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)段标。三九已至,卻和暖如春炉奴,著一層夾襖步出監(jiān)牢的瞬間逼庞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工瞻赶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赛糟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓砸逊,卻偏偏與公主長(zhǎng)得像璧南,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子师逸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容