swift中為什麼要創造出可選型?

2022-01-11 11:34:11 字數 779 閱讀 3211

(1)因為nil這個東西,swift中沒有就是沒有。  int? 叫 整型可選型,如果不提前宣告,直接賦值變數 nil會報錯 。

可以將int賦值給int?   ,但是不能將int?賦值給int

。(2)不能將 普通 string 和可選型直接一起混用,必須 unwrap

。也就是這樣 在某個可選型變數後面加個!

表示擔保它一定不為nil  。這個 叫 強制解包 , 是有風險的。

(3)swift提供了一種語法用來解包 ,let 也可以用var

if let errorcode = errorcode

if let 這裡可以用逗號隔開,對多個可選型進行解包 ,這裡還可以用where關鍵字判斷是否為某個值{

}(4)隱式解析可選:

非optional的變數必須在宣告時或者構造器中進行初始化,但是如果想在viewdidload中初始化,所以只能宣告optional:var mylabel: uilabel? ,雖然我們確定在viewdidload 中初始化,並且在viewcontroller的生命週期內不會置為nil, 但是對mylabel操作時,每次依然要加上!來強制拆包

mylabel!.text = "text"

mylabel!.frame = cgrectmake(0,0,10,10)

(5)swift 的nil和 objective-c 中的nil並不一樣。在 objective-c 中,nil是乙個指向不存在物件的指標。在 swift 中,nil不是指標——它是乙個確定的值,用來表示值缺失。任何型別的可選都可以被設定為nil,不只是物件型別。

為什麼要建立知識中臺?

知識中臺這個概念是從國外傳來的,起源於美國,是由美軍的作戰體系演化而來的,現在所說的 中臺 主要是指學習這種高效 靈活和強大的指揮作戰體系。對我們個人而言,知識中臺可以理解為 資源整合平台 以及 知識架構體系 我們可以通過中臺進行知識整理,便於知識的整合利用。怎樣才能改善這樣的狀況呢?建立屬於自己的...

為什麼C 中要設計IntPtr

示例 intptr vertex someobj.get lock 0,someobj.get getsizeinbytes hardwarebuffer.lockoptions.hbl discard c 中的intptr相當於c 中的int 之所以在c 中存在intptr完全是為了相容基於c c...

python中為什麼要繼承object類

這裡先列出一段簡短的 coding utf 8 author zhengtong class person object name zhengtong if name main x person 通過這段 當我們例項化person 這個類的時候,那x就是乙個例項物件,整個過程python除了建立pe...