回答
??
是「nil-coalescing」運算符。
可選項 - 包含可能或可能不包含值的類型 - 是Swift代碼的基礎。
例如,String
方法toInt()
返回可選的Int
,即Int?
。如果該字符串不是有效的號碼,則返回nil
。如果是,可選的將「包裝」的實際數量:
"1".toInt() // returns {Some 1}
"foo".toInt() // returns nil
的??
操作,使用默認的替換nil
的方式,如果不是nil
,解開它。所以:
// if s isn’t a valid integer, default to 0
let i = "1".toInt() ?? 0 // i will be 1 (not {Some 1})
let j = "foo".toInt() ?? 0 // j will be 0
一個不完善的比喻是,x ?? y
相當於x != nil ? x! : y
。
但也有辦法了一把在它的不同 - 例如,你可以IT連鎖:
"foo".toInt() ?? "bar".toInt() ?? 0
我將其標記爲最佳答案,因爲它也顯示了它在堆棧溢出中的其他答案中無法找到的鏈接使用。謝謝 – zumzum
類型引用後的問號引用選項,這是Swift中的一種機制,它允許您指示某個值可能缺少任何類型。
解開一個可選的可以使用無合併運算符(??
),其允許設置任一展開的值或者在可選的值是nil的情況下的替代值。
optionalValue ?? valueIfNil
,但爲什麼連續兩個問號?我用過?經營者很多,但我沒有看到什麼時候適合使用兩個? – zumzum
??
是nil coalescing operator。如果值存在,則展開Optional
,如果Optional
爲nil
,則使用默認值。例如:
let s1: String? = "my string"
let s2: String? = nil
let s3 = s1 ?? "no value" // s3 = "my string"
let s4 = s2 ?? "no value" // s4 = "no value"
- 1. 什麼是MD5CryptoServiceProvider,它可以做什麼?
- 2. 什麼是web.xml文件,我可以用它做什麼?
- 3. 這可以寫在更少的行,以做它做什麼?
- 4. 什麼是Ext.Component.initialConfig,它做了什麼,以及在什麼情況下使用它?
- 5. 什麼是矩陣,它可以做什麼?
- 6. 什麼是法師,它以什麼方式有用?
- 7. 使用EditText方法和它可以做什麼
- 8. 爲什麼該查詢這麼慢,我可以做些什麼
- 9. 什麼是BigInteger,我們什麼時候可以使用它?
- 10. 什麼是反射,它可以在c#中使用什麼?
- 11. 是否可以做'||' (Javascript)在迅速?
- 12. 在NS2中可以做什麼以及不能做什麼?
- 13. 這是做什麼更rubyesque的方式?
- 14. asm(「pause」)做什麼以及爲什麼要使用它
- 15. SqlCommand.Prepare()做什麼以及它應該在什麼時候使用?
- 16. 可以做些什麼來加速這個memoization裝飾器?
- 17. 你可以用grep來做什麼,你可以用egrep做什麼?
- 18. 我可以使用POCO做什麼?
- 19. 我可以使用該scrollviewer做什麼?
- 20. 什麼是迅速的一個基本的字體,我可以使用的UILabel
- 21. 你無法用Angular.js做什麼,你可以用jQuery做什麼
- 22. 我不能用keytool做什麼,我可以用OpenSSL做什麼?
- 23. VPS可以做什麼?
- 24. webkit可以做什麼?
- 25. Merlin Agent可以做什麼?
- 26. 什麼是調用accessoryButtonTappedForRowWithIndexPath在迅速
- 27. 什麼是切換按鈕以及我們什麼時候可以使用它?
- 28. 我可以使用什麼RSpec的方式對這一要求
- 29. Komodo Macro可以做什麼,如果可以,我該怎麼做?
- 30. R的class.ind()函數做什麼?我什麼時候可以使用它?
](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6-ID72),'a ?? b'是'a!= nil的簡寫? a:b'。也就是說,如果'a'不是'nil',則返回'a',但如果它是'nil',則返回'b'。 – Rob
@zumzum你應該看看三元條件運算符 –