我有一个名为Survey
的结构。它符合Equatable
和Hashable
协议。
import Foundation
public struct Survey {
public let id: String
public let createdAt: Date
public let updatedAt: Date
public let title: String
public let type: String
}
extension Survey: Equatable { }
public func ==(lhs: Survey, rhs: Survey) -> Bool {
return lhs.id == rhs.id && lhs.createdAt == rhs.createdAt && lhs.updatedAt == rhs.updatedAt && lhs.title == rhs.title && lhs.type == rhs.type
}
extension Survey: Hashable {
public var hashValue: Int {
return id.hashValue ^ createdAt.hashValue ^ updatedAt.hashValue ^ title.hashValue ^ type.hashValue
}
}
我可以获取单个Survey
个对象的哈希值。
但是如何获取包含多个Survey
个对象的数组的哈希值?
答案 0 :(得分:2)
也许是这样的?
extension Array: Hashable where Iterator.Element: Hashable {
public var hashValue: Int {
return self.reduce(1, { $0.hashValue ^ $1.hashValue })
}
}
自定义哈希值只是您定义的值
*编辑:如果您只想Hashable
数组Survey
extension Array: Hashable where Element == Survey {
public var hashValue: Int {
return self.reduce(1, { $0.hashValue ^ $1.hashValue })
}
}