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