对于具有不同值的同一结构类,我有两个对象.我需要比较这两个对象是否相等.请引导我通过适当的解决方案.
struct CustomerInfo {
var billAddressCity: String?
init(a:String?){
billAddressCity = a
}
}
/* init object */
var obj1 = CustomerInfo?
var obj2 = CustomerInfo?
obj1 = CustomerInfo(a: "ONE")
obj2 = CustomerInfo(a: "TWO")
/* I need to compare these two objects */
if obj1 == obj2 {
Print(equal values)
}
Run Code Online (Sandbox Code Playgroud)
这不是我寻找的答案,因为它说我需要手动比较字段的每个值, 比较Swift中对象的两个实例
Giu*_*nza 19
在面向对象的世界中,通常,所有对象彼此都是唯一的.
那么,我如何比较两个对象?
您的struct/class需要实现EquatableProtocol,它允许您定义一个对象如何等于同一个类/ struct的另一个对象
让我们从这个House结构开始:
struct House {
var street: String
}
var houseA = House.init(street: "street A, n. 10")
var houseB = House.init(street: "street A, n. 10")
houseA == houseB // of course you can't
Run Code Online (Sandbox Code Playgroud)
使用该Equatable协议,您可以实现static func ==.在这里,您可以定义在使用运算符时,同一类的两个对象如何相等==.
在我的例子中,当它们具有相同的街道时,struct House的两个对象可以是相同的:
struct House: Equatable {
var street: String
static func == (lhs: House, rhs: House) -> Bool {
return lhs.street == rhs.street
}
}
var houseA = House.init(street: "street A, n. 10")
var houseB = House.init(street: "street A, n. 10")
houseA == houseB // now print true
Run Code Online (Sandbox Code Playgroud)
通过遵守Equatable:
struct CustomerInfo: Equatable {
var billAddressCity: String?
init(a:String?){
billAddressCity = a
}
static func ==(lhs: CustomerInfo, rhs: CustomerInfo) -> Bool {
return (lhs.billAddressCity == rhs.billAddressCity)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9712 次 |
| 最近记录: |