可選類型介紹
- 在OC開發(fā)中观蜗,如果一個變量暫時不使用口蝠,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)
- 在Swift開發(fā)中nil也是一種特殊類型避咆,因為和真實類型不匹配是不能賦值的(Swift是強類型語言)
- 在開發(fā)中賦值nil在所難免,因此退出了可選類型
- 可選類型的取值
- 空值
- 有值
可選類型的定義
1俐筋、基本寫法
var flowerName: Optional<String> = nil
2静秆、?語法糖(常用方式)
var flowerName: String? = nil
可選類型的賦值
var flowerName: String? = nil
flowerName = "violet"
//結果:violet
可選類型的?取值
可選類型+粮揉!為強制解包巡李,獲取可選類型的值。
注意:強制解包時危險的操作扶认,如果可選類型的值為nil侨拦,強制解包會導致系統(tǒng)crash!
強制解包前進行判斷可選類型的值是否為nil蝠引,再解包取值阳谍。
var flowerName: String? = nil
//直接解包打印會crash
//print(flowerName!)
flowerName = "violet"
if flowerName != nil {
print(flowerName!)
}
//結果:violet
可選類型的可選綁定
- 判斷可選類型是否有值,如果沒有值螃概,則不執(zhí)行{}內的語句。
- 如果可選類型有值鸽疾,則系統(tǒng)自動將flowerName解包吊洼,并將解包后的值賦值給新的常量flowerName。
var flowerName: String? = nil
flowerName = "violet"
if flowerName != nil {
print(flowerName!)
}
//等價與上述方法
if let flowerName = flowerName {
print(flowerName)
}
Zeb