gpt4 book ai didi

swift - Swift 中对象的默认相等运算符

转载 作者:搜寻专家 更新时间:2023-11-01 05:51:30 25 4
gpt4 key购买 nike

当使用find 搜索数组中对象的索引时:

var index = find(Store.allItems, myItem)

编译器说 Item 类不符合协议(protocol) Equatable。

我的 Item 类是一个对象,所以在我看来,来自 C# 的默认相等比较器应该是引用相等。

在 Swift 中,您似乎需要在每个引用类型上指定 Equatable 才能使 find 工作。
此外,您需要实现 == 运算符,以便它使用 === 来比较引用:

func ==(a:Item, b:Item) -> Bool {
return a === b
}

而且,这最后的声明必须是顶层代码,这让我很反感......

我试着写:

func ==(a:AnyObject, b:AnyObject) -> Bool {
return a === b
}

但是好像不行。

是否有一些更快、更优雅的方法来实现对象的标准相等比较?

最佳答案

只需尝试使 Item 类符合 Equatable:

extension Item:Equatable { }
func ==(lhs:Item, rhs:Item) -> Bool {
return lhs === rhs
}

关于swift - Swift 中对象的默认相等运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26877925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com