在 Swift 中,可以通過遵循 Equatable
協議來判斷兩個結構體是否相等。
首先,需要為結構體實現 Equatable
協議,并定義相等運算符(==
)的實現。以下是一個示例:
struct Person: Equatable {
var name: String
var age: Int
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name && lhs.age == rhs.age
}
}
在上面的例子中,我們為 Person
結構體實現了 Equatable
協議,并在 ==
運算符的實現中判斷了兩個結構體的 name
和 age
屬性是否相等。
接下來,就可以使用 ==
運算符來判斷兩個 Person
結構體是否相等了。例如:
let person1 = Person(name: "John", age: 25)
let person2 = Person(name: "John", age: 25)
if person1 == person2 {
print("兩個結構體相等")
} else {
print("兩個結構體不相等")
}
在上面的例子中,由于 person1
和 person2
的 name
和 age
屬性相等,所以判斷結果為“兩個結構體相等”。
注意:如果不遵循 Equatable
協議并實現相等運算符的話,Swift 默認會使用默認的相等性判斷規則,即判斷兩個結構體是否含有相同的屬性值。但是,對于某些情況下,可能需要自定義相等性判斷規則,這時就需要手動實現 Equatable
協議和相等運算符。