swift類型轉化

一: swift類型轉化的四種操作

Swift是強類型語言,但也允許開發(fā)者通過is、as、as?和as!這四種操作來對類型進行判斷和強制轉換。其中is用作類型判斷,而as?和as!則分別是類型轉換的可選形式和強制形式。swift中比較常用的向下轉換(downcast)是沒有as操作符的,但是,如果現(xiàn)在有一個Dog類他的父類是一個Animal類,可以通過as將一個Dog類轉化為Animal類.

為了方便后面的解釋,這里假設定義了三個類,Animal、Dog和Cat,其中Dog和Cat都繼承自Animal。

二: is操作符

is操作用來判斷某一個對象是否是某一個特定的類,它會返回一個bool類型的值。is操作的邏輯很簡單,某一個類的對象肯定是自己這個類,也一定是自己的超類,但超類的對象不是子類。如果兩個類沒有繼承關系,那is操作一定返回false.

如下:

if Dog is Animal {

print("這是個小狗")

}

if Cat is Animal{

print("這是個小貓")

}

if Animal is Cat {

print("動物是一個貓")? // 這種判斷顯然不能成立,返回的是一個false

}

注意: 以上這種使用is做判斷,返回一個bool類型的結果,判斷一個類是不是另外一個類的類型,就相當于我們在OC里面用到的isKindOfClass去判斷一樣

三: as轉化

使用as轉化,只能將一個子類轉化成一個父類(或者超類),反過來不能轉化成功

四:as!操作符

as!操作符是類型轉換的強制格式,優(yōu)點在于代碼簡單,如果可以轉換,則會返回轉換了格式的對象,如果無法轉換就會拋出運行時錯誤。因此除非百分之百確定可以轉換,否則不應該使用as!來進行強制類型轉換,易造成程序crash。

五:as?操作符

as?和as!操作符的轉換規(guī)則完全一樣,但是as?會返回一個被轉換類型的可選類型,需要我們解封。因為可選類型即使值不存在轉化失敗也不會導致程序報錯,所以當我們在開發(fā)的時候最好使用這種方式進行轉化,除非我們有百分之百的把握才可以使用強制轉化

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容