swift中的optional值有這樣的特性,當對其進行可選拆包時,即使用?進行optional型別值的取值時,如果optional值不為nil,則會返回原始型別的資料值如果為nil,則會返回nil。因此,當使用?對optional拆包後進行方法、屬性或者下標的呼叫時,如果有值,則會成功相應呼叫,如果沒有值,則會呼叫失敗,返回nil。
注意:使用!則會進行強制拆包,這時如果optional值為nil,則會出現執行時錯誤,因此開發者在使用!進行強制拆包時,必須確認optional型別值不為nil。
當對可選值進行可選拆包並呼叫其屬性或方法後,無論原屬性或者方法返回值是什麼型別的,都會被包裝成optional值型別。當使用?對乙個optional值進行拆包並呼叫其方法時,方法的返回值一會被包裝為optional型別,示例如下:
class myclass
class myclasstwo
}let obj:myclass = nulnbdyolmyclass()
//將返回nil
obj.cls?.run()
在進行optional鏈呼叫的時候,會遵守如下一些特性:
1.如果進行?拆包optional值的屬性或者方法返回值原來為非optional值,則會包裝成optional值。
2.如果進行?拆包optional值的屬性或者方法返回值原來為optional值,則依然會返回optional值,並且並不會進行optional值型別的巢狀。
3.由於使用optional值?可選拆包時會將其屬性和方法的返回值都包裝成optional型別的,因此使用?可以進行optional鏈式呼叫,這程式設計客棧其間,有乙個環節調程式設計客棧用失敗,整個鏈都會返回nil。
示例如下:
let obj:myclass = myclass()
//將返回nil
(obj.cls?.run())?.startindex
本文標題: swift中optional值的鏈式呼叫學習筆記
本文位址:
Swift 可選值 Optional 講解
前提 swift中有規定 物件中的任何屬性在建立時,都必須要有明確的初始化值 1.定義可選型別 方式一 常規方式 不常用 var name optional nil 方式二 語法糖 常用 var name string?nil optional理解 optional也是objective c沒有的資...
Swift中的Optional型別
swift當中的optional型別,表明乙個變數可能有確認的值,也可能不包含任何值。不包含任何值在swift當中,就是乙個nil。swift當中的變數或者常量,在使用之前必須得賦值,但是對於optional型別來說,情形有點不一樣。對於optional變數來說,使用之前可以不用賦值 var a i...
Swift中的Optional型別
swift當中的optional型別,表明乙個變數可能有確認的值,也可能不包含任何值。不包含任何值在swift當中,就是乙個nil。swift當中的變數或者常量,在使用之前必須得賦值,但是對於optional型別來說,情形有點不一樣。對於optional變數來說,使用之前可以不用賦值 var a i...