swift可選型


Swift中,可選類型其根源是一個枚舉型,裏面有None和Some兩種類型。其實所謂的nil就是Optional.None, 非nil就是Optional.Some, 然後會通過Some(T)包裝(wrap)原始值,這也是爲什麼在使用Optional的時候要拆包(從enum裏取出來原始值)的原因, 也是PlayGround會把Optional值顯示爲類似{Some "hello world"}的原因

可選型不能直接使用,我們要使用可選型就需要Unwrap:解包
我們可以直接強制解包,“the errorcode is" + errorcode! 加上 !
如上面的強制解包是有風險的。
可選型表示變量裏面是有可能爲空的,我們要做非空判斷,
if let unwarpederrorcode = errorcode{

}
上面是常規的解包方法 ,當然也可以使用if var 解包,但不鼓勵;
if let errorcode = errorcode, errormessage = errormessage where errorcode =="404"{
}
這是對多個可選型解包的方法,後面加上where判斷,確保解包後的結果是我們所想得到的

下面介紹兩個可選型操作:
1、optional chaining 鏈條
errormessage?.uppercasestring
2、nil-coalesce
let message2 =errormessage == null?"no error":errormessage
可使用三目運算符的寫法,當然還有另一種寫法
let message3 = errormessage ?? "no error"
message3想取errormessage的值,但取不到就用後面的
可選型在元組中的使用
聲明一個元組
var error1 :(errorcode: Int ,errorMessage: String?) =(404,"not found")
error.errorMessage = nil
但我們不能把nil賦值給非可選型
可選型的實際應用
var ageInput :String ="xyz"
設置新的類型 var age =Int( ageInput) 這裏的age返回的是nil
age的類型是可選型的age,因爲xyz 不能轉成 Int

var greeting ="Hellot"
greeting.rangOfString("ll")返回 2..<4前閉後開的範圍
greeting.rangOfString("oo") 返回nil ,這時候的greetings是可選型
合理的使用可選型能避免空指針報錯
隱式可選型
var erorMessage :String! =null
但這種隱式可選型存在風險,在我們創建一個函數時候,可以使用隱式可選型,使其可以爲nil,在運算中給其賦值。

NULL是一個通用指針
var age: Int = 35var height:Int = 180
上面定義了兩個變量,都是Int型,數值分別爲35180,但是不能給這兩個變量賦值nil。這樣就需要可選型了(Optional)。
可選型其實是枚舉類型(enum)

nil是一個對象值,如果要把一個對象設置爲空的時候就用nil。
Nil是一個類對象的值,如果要把一個Class類型的對象設置爲空的時候就用Nil。
在下面的代碼中聲明瞭兩個可選型變量。?表示是一個可選型
var age:Int? = nilvar height:Int? = 180
以height爲例:與下面的代碼是等效的。
var height:Optional<Int> = Optional <Int>(180)



本文作爲學習筆記,記錄和分享學習的歷程


NULL是一個通用指針
var age: Int = 35var height:Int = 180
上面定義了兩個變量,都是Int型,數值分別爲35180,但是不能給這兩個變量賦值nil。這樣就需要可選型了(Optional)。
可選型其實是枚舉類型(enum)

nil是一個對象值,如果要把一個對象設置爲空的時候就用nil。
Nil是一個類對象的值,如果要把一個Class類型的對象設置爲空的時候就用Nil。
在下面的代碼中聲明瞭兩個可選型變量。?表示是一個可選型
var age:Int? = nilvar height:Int? = 180
以height爲例:與下面的代碼是等效的。
var height:Optional<Int> = Optional <Int>(180)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章