很多人在剛上手swift時對於optional中 『!』 和 『?』 的使用十分不理解,接下來我會談一談自己對於這兩個符號的使用方式的理解。
先來說說optional的概念,以方便之後的理解。來看一下下面的**:
var a : string = nil
// 編譯錯誤,string型別不能為nil
var b : string = 「hello!」
swift 中的普通型別不再能設為nil。那如何表示這個值不存在呢?所以引進了optional的概念:代表 nil 或某個具體的值。例如:
var c : string? = nil
var d : string? = 「hello!」
string? 就是乙個optional,它既能夠被具體型別賦值, 也可以賦值為nil。通過 string 和 optional的比較,發現optional 就相當於把具體型別和 nil 打包**在了一起,轉變成了一種新的型別。