前提:swift中有規定:物件中的任何屬性在建立時,都必須要有明確的初始化值
1.定義可選型別
方式一:常規方式(不常用)
var name : optional= nil
方式二:語法糖(常用)
var name:string? = nil
optional理解:
optional也是objective-c沒有的資料型別,是蘋果引入到swift語言中的全新型別,它的特點就和它的名字一樣:可以有值,也可以沒有值,當它沒有值時,就是nil。此外,swift的nil也和objective-c有些不一樣,在objective-c中,只有物件才能為nil,而在swift裡,當基礎型別(整形、浮點、布林等)沒有值時,也是nil,而不是乙個初始值,沒有初始值的值,是不能使用的,這就產生了optional型別。定義乙個optional的值很容易,只需要在型別後面加上問號(?)就行了:
let namestr: string?optional值和非optional值的區別就在於:optional值未經初始化時也為nil,非optional未初始化時什麼都沒有,如果直接使用會報錯:
//未被初始化,但是是乙個optional型別,為niloptional拆包:var namestr: string?
str //輸出nil
//未被初始化,也不是optional型別
var namestr2: string
str2 //使用時出錯
optional型別的值不能被直接使用,當需要用時要顯式拆包,以表明我知道這個optional是一定有值的:拆包的方式是直接在變數後加!
var namestr: string? = "hello world!"拆包的原因是因為optional型別其實是乙個列舉:namestr //
namestr! //hello world!
enum optional: reflectable, nilliteralconvertible else else 內容,如果有值,系統會自動將name解包,並且直接複製給tempname
寫法二:(常用),就近原則
if let name = name{
print(name)
Swift 可選值型別
enum optional optional 實際上就是乙個列舉。可選值是swift中重要的基礎型別之一,所以有更加簡潔的語法來表示。例如 optional可以寫成int?因為可選值遵守expressiblebynilliteral協議,所以可以用nil代替.none。當你看見問號的時候,實際上你就...
Swift 可能值1 可選繫結 可選鏈
場景 使用者輸入姓名 可能可以轉換為數字,也可能不行 letage response.toint varoptionalnumber int?預設初始化為 nil letresponse 字串 let age response.toint 乙個查詢的方法,可能查不到值,那麼返回值可以設定為可能值 f...
六 Swift5 0之 可選值
全系列導航 swift5.0 系列部落格索引 可選值 optionals有兩種狀態 1.有值 2.沒有值,沒有值就是nil 有值 var optvalue1 int?9 沒有值 var optvalue2 int?var optvalue3 int?nil 可選值可以利用if語句來進行判斷 var ...