剛剛看swift語言,被可選類型弄得很繞,看了好幾遍,大概整理了一下。
使用可選類型的意義:當一個我們訪問一個可選類型的常量或者變量的時候當它的值爲空時不會報空指針而是表示沒有值(避免了空指針的錯誤)。即使用可選(optionals)來處理值可能缺失的情況。
可選類型的值有兩種情況:有值、或者爲nil。
PS:Swift 的nil和Objective-C 中的nil並不一樣。在 Objective-C 中,nil是一個指向不存在對象的指針。在 Swift中,nil不是指針——它是一個確定的值,用來表示值缺失。任何類型的可選都可以被設置爲nil,不只是對象類型。
概念:
在OC開發中,如果一個變量暫停不使用,可以賦值爲0(基本屬性類型)或者賦值爲空(對象類型)
在swift開發中,nil也是一個特殊的類型.因爲和真實的類型不匹配是不能賦值的(swift是強類型語言)
但是開發中賦值nil,在所難免.因此推出了可選類型
可選表示:-有值,等於 x或者沒有值
定義:
//寫法一:定義可選類型
let name : Optional<String> = nil
// 寫法二:定義常用可選類型
let name : String? = nil
//寫法三:定義隱式解析可選
let name:String ! = "have value"
使用?定義一般可選類型,使用!定義隱式解析可選類型(可將此可選類型當做普通類型數據來使用二不需要綁定解包取值,但是當值爲nil時解包取值會出錯)。
賦值
//
演練一:給可選類型賦值
var string : Optional<String> = nil
//
給可選類型賦值
string = "Hello world"
print(string)
// 結果:Optional("Helloworld")\n
// 因爲打印出來的是可選類型,所有會帶Optional
取值
通過if語句來判斷是否有值,要取出值得花可以通過可選綁定來解析值。
// 取出可選類型的真實值(解包)
print(string!)
// 結果:Hello world\n
// 注意:如果可選類型爲nil,強制取出其中的值(解包),會出錯
string = nil
print(string!) // 報錯
//
正確寫法:
if string != nil {
print(string!)
}
//
簡單寫法:爲了讓在if語句中可以方便使用string
// 可選綁定
if let str = string {
print(str)
}