在Julia中,至少有一个字段具有相同值的复合类型散列为不同的值。这意味着,如果您将复合类型用作字典键或任何其他依赖于散列值的内容,则复合类型将无法正常工作。此行为与其他类型的行为也不一致,例如Vector{Int}。更具体的说,julia> hash([1,2,3])==hash([1,2,3])没有字段的复合类型散列为相同的值:
julia> type A end
我想创建一个通用接口,用于隐藏产品键上的hash函数的实现(用于查找产品以及产品本身范围之外的各种缓存和计算)。我希望将哈希函数的具体实现与实现接口的特定读取器绑定在一起。我这样做是出于各种一致性原因,因为产品存储在缓存中,可能会在未来迁移,并且我希望确保查找始终使用相同的hash。关于如何以这种方式编写泛型,我有一些语法问题。例如,这种类型的层次结构有语法问题: type U def hash(u:U) : V
trait Product[has