as as as?三種型別轉換操作符使用詳解

2021-07-11 09:31:11 字數 938 閱讀 1968

1.as使用場合

(1)從派生類轉換基類,向上轉型

class animal{}

class cat: animal{}

let cat = cat()

let animal = cat as animal

(2)消除二義性,數值型別轉換

let num1 = 42 as cgfloat

let num2 = 42 as int

let num3 = 42.5 as int

let num4 = (42/2) as double

(3)swift語句中進行模式匹配

switch animal

2.as!使用場合

向下轉型時使用。由於是強制型別轉換,如果轉換失敗會報runtime執行錯誤。

class animal()

class cat:animal

let animal:animal = cat()

let cat = animal as! cat

3.as?使用場合

as?和as!操作符的轉換規則完全一樣。但as?如果轉換不成功的時候便會返回乙個nil物件成功的話返回可選型別值(optional),需要我們拆包使用。

由於as?在轉換失敗的時候也不會出現錯誤,所以對於如果能確保100%會成功的轉換則可使用as!,否則使用as?

let animal:animal = cat()

if let cat = animal as? catelse

OpenStack三種型別的NAT轉換

snat snat即源網路位址轉換,這個nat路由修改ip包包頭中的源ip位址。snat功能通常用於讓只具有私有ip位址的主機能夠訪問外網,比如,多個pc使用路由器共享上網,每個pc都配置了內網ip,pc訪問外部網路時,路由器將資料報報頭中的源位址替換成路由器的ip,當外部網路的伺服器,比如 web...

程序 三種型別,三種狀態

一 程序的概念 程序是執行乙個程式時所分配的資源,資源包括占用的cpu,記憶體等,是乙個動態執行過程。二 程序的組成 正文段使用者資料段 系統資料段 程序控制塊 pcb cpu暫存器值 堆疊 三 程序控制塊pcb 程序控制塊是系統用來控制和管理程序,獲得程序狀態和程序存在特徵的唯一標識。包括 程序標...

強制型別轉換操作符

操作符 中文名稱 含義 dynamic cast 動態型別轉換符 支援多型而存在,主要用於類之間的轉換 static cast 靜態型別轉換符 僅僅完成編譯時期的轉換檢查 reinterpret cast 再解釋型別轉換符 完成不同型別指標之間的相互轉換 const cast 常型別轉換符 用來修改...