Swift語言定義后綴!作為標(biāo)準(zhǔn)庫(kù)中命名類型ImplicitlyUnwrappedOptional<T>的簡(jiǎn)寫。換句話說,下面兩個(gè)聲明等價(jià):
var implicitlyUnwrappedString: String!
var implicitlyUnwrappedString: ImplicitlyUnwrappedOptional<String>
上述兩種情況下,變量implicitlyUnwrappedString被聲明為一個(gè)隱式解析可選類型的字符串。注意類型與!之間沒有空格。
你可以在使用可選的地方同樣使用隱式解析可選。比如,你可以將隱式解析可選的值賦給變量、常量和可選特性,反之亦然。
有了可選,你在聲明隱式解析可選變量或特性的時(shí)候就不用指定初始值,因?yàn)樗腥笔≈?code style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; -webkit-font-smoothing: antialiased; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 14px; padding: 0px 5px; color: rgb(199, 37, 78); background-color: rgb(248, 248, 248); white-space: nowrap; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; margin: 0px 2px; border: 1px solid rgb(234, 234, 234);">nil。
由于隱式解析可選的值會(huì)在使用時(shí)自動(dòng)解析,所以沒必要使用操作符!來解析它。也就是說,如果你使用值為nil的隱式解析可選,就會(huì)導(dǎo)致運(yùn)行錯(cuò)誤。
使用可選鏈會(huì)選擇性的執(zhí)行隱式解析可選表達(dá)式上的某一個(gè)操作。如果值為nil,就不會(huì)執(zhí)行任何操作,因此也不會(huì)產(chǎn)生運(yùn)行錯(cuò)誤。
關(guān)于隱式解析可選的更多細(xì)節(jié),見章節(jié)“隱式解析可選”。
隱式解析可選類型(Implicitly Unwrapped Optional Type)語法
隱式解析可選類型 → 類型 !