我們喜歡 struct 的自動相等行為,只需簡單地遵守Equatable協議即可。
有時,我們希望從結構相等比較中排除某些屬性。
目前,這是我們正在使用的方法。
struct House: Equatable {
var field_0: String
var field_1: String
...
var field_50: String
static func == (lhs: House, rhs: House) -> Bool {
if lhs.field_0 != rhs.field_0 { return false }
if lhs.field_1 != rhs.field_1 { return false }
...
if lhs.field_48 != rhs.field_48 { return false }
// Ommit field_49
if lhs.field_50 != rhs.field_50 { return false }
return true
}
}
但是,這種方法很容易出錯,尤其是當我們在結構中添加新欄位時。
有沒有辦法從相等比較中排除某些屬性欄位,而無需撰寫我們自己的 == 函式?
uj5u.com熱心網友回復:
有沒有辦法從相等比較中排除某些屬性欄位,而無需撰寫我們自己的
==函式?
不可以。目前,Equatable 一致性自動合成的唯一替代方法是使用老式撰寫代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/336454.html
