Swift筆記 可選型別

2021-07-11 03:47:20 字數 1377 閱讀 3916

c 和 objective-c 中並沒有可選型別這個概念。最接近的是 objective-c 中的乙個特性,乙個方法要不返回乙個物件要不返回nil,nil表示「缺少乙個合法的物件」。然而,這只對物件起作用——對於結構體,基本的 c 型別或者列舉型別不起作用。對於這些型別,objective-c 方法一般會返回乙個特殊值(比如nsnotfound)來暗示值缺失。這種方法假設方法的呼叫者知道並記得對特殊值進行判斷。然而,swift 的可選型別可以讓你暗示任意型別的值缺失,並不需要乙個特殊值。

可選型別

可選型別(optionals)來處理值可能缺失的情況。可選型別表示:

有值,等於 x

或者沒有值

swift 的int型別有一種構造器,作用是將乙個string值轉換成乙個int值。然而,並不是所有的字串都可以轉換成乙個整數。字串」123」可以被轉換成數字123,但是字串」hello, world」不行。

下面的例子使用這種構造器來嘗試將乙個string轉換成int:

let possiblenumber = "123"

let convertednumber = int(possiblenumber)

// convertednumber 被推測為型別 "int?", 或者型別 "optional int"

因為該構造器可能會失敗,所以它返回乙個可選型別(optional)int,而不是乙個int。乙個可選的int被寫作int?而不是int。問號暗示包含的值是可選型別,也就是說可能包含int值也可能不包含值。(不能包含其他任何值比如bool值或者string值。只能是int或者什麼都沒有。)

nil

給可選變數賦值為nil來表示它沒有值:

var serverresponsecode: int? = 404

// serverresponsecode 包含乙個可選的 int 值 404

serverresponsecode = nil

// serverresponsecode 現在不包含值

nil不能用於非可選的常量和變數。如果你的**中有常量或者變數需要處理值缺失的情況,請把它們宣告成對應的可選型別。

如果你宣告乙個可選常量或者變數但是沒有賦值,它們會自動被設定為nil:

var surveyanswer: string?

// surveyanswer 被自動設定為 nil

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

swift 可選型別筆記

晚上十一點半了,看書累了,原本想睡了的,想了想,還是把剛看的總結一下,把這篇筆記寫了吧。廣州下雨,真特麼的冷。好了,廢話不說了,說正題說說swift可選型別。先定義乙個變數 var string zhangxu 想想這個變數要強轉成 int 型別的會怎樣?var zint int string.to...

Swift 可選型別

swift 可選型別 optionals 可選型別 強制解析 自動解析 可選繫結 1.可選型別 加入我們建立乙個變數,但是它有可能為空,這時候swift提供乙個符號 來表示這是乙個可能為空的變數 var thisstr string?看到這裡的if,沒錯,if或者for迴圈後面的內容不加 加了也沒錯...

Swift 可選型別

在 swift 中,可選型別用來處理值可能缺失的情況,表示下面兩種情況 在 swift 中宣告變數時,使用?或 來表示宣告的變數是可選型別。let name string?var age int 此時,變數name和age預設都是nil,表示空。而?和 的區別在於使用前者宣告的變數所包含的值時,需要...