2015-05-28 45 views
-1

我想弄清楚如何在Swift中正確使用??這是什麼?迅速做?它可以以什麼方式使用?

我見過它在某些類中使用,但我不確定它爲什麼被使用以及何時適合使用。

有人有一個很好的例子來解釋這個嗎?

+1

](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

+0

@zumzum你應該看看三元條件運算符 –

回答

2

??是「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 

您可以閱讀更多有關自選here和As [文檔說,拆開包裝技術here

+0

我將其標記爲最佳答案,因爲它也顯示了它在堆棧溢出中的其他答案中無法找到的鏈接使用。謝謝 – zumzum

0

類型引用後的問號引用選項,這是Swift中的一種機制,它允許您指示某個值可能缺少任何類型。

解開一個可選的可以使用無合併運算符??),其允許設置任一展開的值或者在可選的值是nil的情況下的替代值。

optionalValue ?? valueIfNil 
+0

,但爲什麼連續兩個問號?我用過?經營者很多,但我沒有看到什麼時候適合使用兩個? – zumzum

3

??nil coalescing operator。如果值存在,則展開Optional,如果Optionalnil,則使用默認值。例如:

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" 
相關問題