Swift 可選值 Optional 講解

2022-07-24 20:06:17 字數 1201 閱讀 2173

前提: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型別,為nil

var namestr: string?

str //輸出nil

//未被初始化,也不是optional型別

var namestr2: string

str2    //使用時出錯

optional拆包:

optional型別的值不能被直接使用,當需要用時要顯式拆包,以表明我知道這個optional是一定有值的:拆包的方式是直接在變數後加!

var namestr: string? = "hello world!"

namestr     //

namestr!    //hello world!

拆包的原因是因為optional型別其實是乙個列舉:

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 ...