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

如何在Swift中为自定义类创建相等性测试?,swift,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()

如何在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")
}

看起来您想使用identity操作符(
==
)。在对象上使用时,它会检查对象是否指向同一实例

class MyClass {}

let obj1 = MyClass()
var obj2 = obj1

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

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

好像你把平等性和身份混淆了我试过这个代码,但它没有打印“同一个对象”。知道为什么吗?这两个物体不是指向同一个物体吗?你是在玩游戏吗?很有趣。我试试看。我在一个操场上测试了我的代码,它运行得很好。你确定你使用的是准确的代码吗?我刚刚在一个命令行项目中尝试过,但效果很好。我犯了一个错误,输入了一个错误。你能投票表决这个问题吗?这是一个合法的问题。