swift 注意事项 (十六) —— 可选链
生活随笔
收集整理的這篇文章主要介紹了
swift 注意事项 (十六) —— 可选链
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
可選鏈(Optional Chaining) 我們都知道“可選型”是什么。那么可選鏈又是什么,舉個樣例解釋一下:
struct MyName{ var name }
struct MyInfo { var myName:MyName??= MyName() }
class MyClass { var structInstance: MyInfo??= MyInfo() }
這里有兩個結構體和一個類,當。這個類實例化的時候: var myInstance = MyClass() 全部的可選屬性都會被初始化,由于我寫了默認值。
if let name =?myInstance.info?.myName?.name?{(感謝 swift技術交流第一平臺(355277)的群友 周老濕(974871365) 指出成員名錯誤)
if let name =?myInstance.structInstance?.myName?
在紅字部分,能夠看到,是使用的一連串的可選值。
這是由于:在可選鏈中,不論什么一個環節的可選型解析失敗(值為nil),那么整個可選鏈的結果為nil。
當然,事實上我們可能會想在第一個環節使用“!”來讓可選鏈返回一個確切的值,而不是可選值,比方: let name = myInstance.info!.myName!.name 但,大多數情況,我們并不知道有誰會來改代碼。有誰會改變某個封裝的實現。假設錯誤的解析了一個可選值的話(一個值為nil的可選型),那么帶來的后果僅僅有一個,我們的程序會崩掉。。。
這章就說了這么點事兒。。
struct MyName{ var name }
struct MyInfo { var myName:MyName??= MyName() }
class MyClass { var structInstance: MyInfo??= MyInfo() }
這里有兩個結構體和一個類,當。這個類實例化的時候: var myInstance = MyClass() 全部的可選屬性都會被初始化,由于我寫了默認值。
if let name =?myInstance.info?.myName?.name?{(感謝 swift技術交流第一平臺(355277)的群友 周老濕(974871365) 指出成員名錯誤)
if let name =?myInstance.structInstance?.myName?
.name
?{ println(name) } else { println(“some info is nil") }在紅字部分,能夠看到,是使用的一連串的可選值。
這就叫做可選鏈。
這里我還使用了一個非常早的筆記中提到的 ?if let name = 可選型 {……} 這種語法。這是由于:在可選鏈中,不論什么一個環節的可選型解析失敗(值為nil),那么整個可選鏈的結果為nil。
當然,事實上我們可能會想在第一個環節使用“!”來讓可選鏈返回一個確切的值,而不是可選值,比方: let name = myInstance.info!.myName!.name 但,大多數情況,我們并不知道有誰會來改代碼。有誰會改變某個封裝的實現。假設錯誤的解析了一個可選值的話(一個值為nil的可選型),那么帶來的后果僅僅有一個,我們的程序會崩掉。。。
。所以,千萬不要這么干!
!。!
!
這章就說了這么點事兒。。
。。
至于什么調用函數,使用下標,不須要再說了,邏輯能力正常的人類。都直接就會用了。
版權聲明:本文博主原創文章,博客,未經同意不得轉載。
總結
以上是生活随笔為你收集整理的swift 注意事项 (十六) —— 可选链的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpriteBuilder中关于大量CC
- 下一篇: zabbix应用之短信报警