Swift學習——Swift解釋特定的基礎(七)

來源:互聯網
上載者:User

標籤:

Implicitly Unwrapped Optionals    隱式解析選項

如上所述。可選意味著常數或變數“沒有值”。通過可選if聲明來推斷是否存在值,假設有值析值。

有時候在程式架構中,第一次被賦值之後。能夠確定一個可選總會有值。

在這樣的情況下。每次都要推斷和解析可選值是很低效的,由於能夠確定它總會有值。

這樣的類型的可選被定義為隱式解析可選(implicitly unwrapped optionals)。

把想要用作可選的類型的後面的問號(String?)改成驚嘆號(String!)來聲明一個隱式解析可選。

當可選被第一次賦值之後就能夠確定之後一直有值的時候,隱式解析可選很實用。隱式解析可選主要被用在 Swift 中類的構造過程中,請參考類執行個體之間的迴圈強引用。

一個隱式解析可選事實上就是一個普通的可選,可是能夠被當做非可選來使用,並不須要每次都使用解析來擷取可選值。以下的範例展示了可選String和隱式解析可選String之間的差別:

let possibleString: String?

= "An optional string."println(possibleString!) // requires an exclamation mark to access its value// prints "An optional string." let assumedString: String! = "An implicitly unwrapped optional string."println(assumedString) // no exclamation mark is needed to access its value// prints "An implicitly unwrapped optional string.


你能夠把隱式解析可選當做一個能夠自己主動解析的可選。

你要做的僅僅是聲明的時候把驚嘆號放到類型的結尾,而不是每次取值的可選名字的結尾。

注意:假設你在隱式解析可選沒有值的時候嘗試取值。會觸發執行時錯誤。和你在沒有值的普通可選後面加一個驚歎號一樣。


你仍然能夠把隱式解析可選當做普通可選來推斷它是否包括值:

if assumedString {    println(assumedString)}// prints "An implicitly unwrapped optional string.
你也能夠在可選綁定中使用隱式解析可選來檢查並解析它的值:
if let definiteString = assumedString {    println(definiteString)}// prints "An implicitly unwrapped optional string.

注意:假設一個變數之後可能變成nil的話請不要使用隱式解析選項。假設你需要推斷一個變數的生命週期是否nil如果。請使用普通的可選類型。

著作權聲明:本文部落格原創文章,部落格,未經同意,不得轉載。

Swift學習——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.