/** 可選值: optionals 加上個問號 兩種狀態一種是有值,另一種是沒有值nil 可選值可以用 if語句來進行判斷的 */ // 這個就是可選值,有值是整型9 let optionValue:Int? = 9 print(optionValue) // Optional(9) if optionValue !=nil { print(optionValue) // Optional(9) } print("------------->>") // 這裡的!表示對可選值的一個強制解析 (unwrapping解包) let sValue:Int = optionValue! print(sValue) // 9 // 沒有值 let optionValue1:Int? =nil if optionValue1 ==nil { print(optionValue) // Optional(9) } print("------------->>") // 注意這個不是編譯時的錯誤,是運行時的錯誤 // fatal error: unexpectedly found nil while unwrapping an Optional value // 空的對象,不可以對它進行強制解析,加上歎號強制解包 // var sValue1: Int = optionValue1! // print(sValue1) // 可選綁定 ifvar sValue1 = optionValue1 { print(sValue1) } /** 隱式解析可選類型,兩種狀態 有值,沒有值nil */ let imOptValue:Int! = 111 print("------------->>") if imOptValue !=nil { print(imOptValue) } print("iValue------------->>") // 可選綁定 iflet iValue = imOptValue { print(iValue) } print("iValue2------------->>") // 這個地方我們定義了隱式可選類型後呢,不需要在強制解包(加歎號), let iValue2:Int = imOptValue print(iValue2) /** 無論是普通的可選型,還是隱式的可選型, 對於一個沒有值的進行解包都會引起一個運行時的錯誤 */ /** 1.常量和變量 Swift語言中是用let來定義常量,並且要初始化。var來定義變量, 在let或者var後面申明類型,冒號+空格,然後再加上類型名稱。 2.optional(可選)變量 可選變量用於處理值缺失的情況,有點類似於OC中的nil,可以用於任何類型上,不僅僅是類,不過更加安全。Swift是類型安全的一門語言,可以很少申明類型。 附:Swift和Objective-C中nil的區別 1)OC中,nil是一個指向不存在對象的指針; 2)Swift中,nil不是指針,它是一個確定的值,用於表示值缺失。任何類型的可選狀態都可以設置為nil,不只是對象類型; 3.深入了解Optional變量 Optional其實就是一個enum,裡面有None和Some類型。nil就是Optional.None,非nil就是Optional.Some,通過Some(T)包裝原始值,所以在是用Optional的時候要進行拆包。 聲明一個可選類型的時候要在類型後面加上?如:var str : String? var strValue: String? 意思不是“我聲明了一個Optional的String值”,而是我聲明了一個Optional類型值。 對一個可選類型的值,需要進行拆包才不會報錯。 拆包有兩種方式,如下: 1)Optional Binding 如: if let str = strValue { let hashValue = str.hashValue } */