Swift 可選值

來源:互聯網
上載者:User

標籤:

可選值(Optional value)有兩種狀態 1.它有一個值  2.它沒有值

Optional type是swift裡面的一個新的概念

上面的serverResponseCode就是一個Int?類型,上面代碼代表serverResponseCode的兩種不同狀態

在做一些不確定的操作的時候特別有用,比如當嘗試把字串轉成數位時候:

如果轉換成功,convertedNumber裡面就存著123這個值,如果轉換失敗,則儲存nil值

   nil在OC和swift中是不同的,在OC中nil是指向一個不存在對象的指標,而在swift中,nil代表可選值的狀態是“值不存在”,所以在swift中,int等等基本類型的可選值也可以被賦值為nil

如果在聲明可選值的時候沒有賦初值,可選值會自動獲得nil值

 

拆包(unwrapping)

這裡的!就是強制拆包(force unwrapping)操作,如果可選值沒有值,又對可選值進行強制拆包操作,那麼這時候會報出一個執行階段錯誤。

所以在強制拆包前總是要檢查一下可選值是否為nil,上面的寫法有些麻煩,swift提供一個簡略的寫法

上面的“let actualNumber”也可以換成var actualNumber

 

隱式已拆包可選值(Implicity Unwrapped Optionals)

如果程式員可以保證一個可選值的總是有值的,而且頻繁的拆包比較麻煩,這時可以使用Implicity Unwrapped Optionals

相當於使用的時候都會自動拆包,聲明使用!來代替?

我的理解是在需要拆包的時候Implicity Unwrapped Optionals會自動拆包,在不需要拆包的時Implicity Unwrapped Optionals表現和普通的可選值是一樣的

 

需要拆包的時候會自動拆包:

不需要拆包的時候表現與普通可選值一樣:

 

Swift 可選值

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.