如何在Swift中为自定义类创建相等性测试?

时间:2014-06-22 06:38:47

标签: swift

如何在Swift中为自定义类创建一个相等测试来测试同一个自定义类的两个对象是否指向同一个东西?

class MyClass : Equatable {

}

func ==(lhs: MyClass, rhs: MyClass) -> Bool {
    return lhs == rhs // What should go in here to test if they both point to the same memory space?
}

let obj1 = MyClass()
var obj2 = obj1

if (obj1 == obj2) {
  println("same object")
}

1 个答案:

答案 0 :(得分:4)

看起来您想要使用身份运算符(===)。在对象上使用时,它会检查它们是否指向同一个实例。

class MyClass {}

let obj1 = MyClass()
var obj2 = obj1

if (obj1 === obj2) {
    println("same object")
}

这也意味着你没有让你的类实现任何额外的协议。所有类都有这种行为。如果你愿意,你仍然可以覆盖==。只需在return lhs === rhs功能中使用==即可。