【发布时间】:2019-06-11 09:03:04
【问题描述】:
在项目中,我们使用类作为模型层,因此我必须编写如下代码:
// MARK: - Hashable
extension Player: Hashable {
static func == (lhs: Player, rhs: Player) -> Bool {
return lhs.hashValue == rhs.hashValue
}
func hash(into hasher: inout Hasher) {
hasher.combine(self.name)
}
}
可以以某种方式避免这种样板吗?默认情况下是否可以通过.hashValue 实现Equatable 比较?谢谢。
【问题讨论】:
-
您可以将Sourcery 与自定义模板一起使用,并将您的类扩展为
autoHashable例如。 -
@EternalBlack 在 Swift 4.2 中使用 Sourcery 生成 Equatable 和 Hashable 是不必要的。顺便说一句,自动生成的代码并不比手动编写的代码好。样板仍然存在。生成的代码中甚至可能存在错误。