尋找這個特定行爲的文檔參考或名稱或鏈接,這與可選綁定類似,但在該文檔的該部分沒有提及。Swift optionals and equality operator
我可以測試可選與==
運營商和測試對陣雙方nil
和其實際價值,而不做任何明確的解包:
var toggle: Bool? = nil
if (toggle == true || toggle == nil) {
// do something
}
這編譯並能達到您想要它,但這裏發生的事情是我沒有明確解開toggle!
; ==
已經安全地爲我完成了。
這很方便,但我承認當我注意到它時有點驚訝。這只是默認的==
實施的行爲?或者是在這裏發生的其他語言?感謝您的見解。
如果你用命令點擊'==',那麼你會看到有一個'public func ==(lhs:T?,rhs:T?) - > Bool',它有兩個可選項操作數。 –
的確,但爲什麼要這樣呢?這是語言設計中的哲學嗎?或者只是一種便利?或者我在想這個太難了? –
我覺得這很方便。比較運算符在Swift 3中刪除了可選項:https://github.com/apple/swift-evolution/blob/master/proposals/0121-remove-optional-comparison-operators.md。但是平等運算符依然存在:*「接受可選操作數的變體==和!=仍然有用,它們的結果並不令人驚訝,所以它們將保持不變。」* –