gpt4 book ai didi

swift - 计算哈希值

转载 作者:行者123 更新时间:2023-11-28 08:45:15 25 4
gpt4 key购买 nike

我的结构有一些属性,看起来像:

struct Foo {
var number1: Int
var number2: Int
var number3: Int

// Has a lot more numbers and other properties

var numbers: Int { return number1.hashValue ^ number2.hashValue ^ number3.hashValue }
}

当我将 Foo 的某些实例与 instance1.numbers == instance2.numbers 进行比较时,它太不可靠了,因为它可能返回也可能不返回 true/false。所以我通过在返回之前将每个数字乘以一个数字来修复它:

var numbers: Int { return (100 * number1.hashValue) ^ (200 * number2.hashValue) ^ (300 * number3.hashValue) }

这似乎有效并且尚未发现一些不需要的结果,但它似乎不是执行此操作的预期方法。是否有其他(更好的)方法来做到这一点?

最佳答案

哈希值永远不会告诉您值是否相等。它可以告诉您值不相等或可能相等。所以如果你想使用哈希比较两个 Foo 实例,你必须像这样执行它:

struct Foo {
var number1: Int
var number2: Int
var number3: Int

// Has a lot more numbers and other properties

var numbers: Int { return number1.hashValue ^ number2.hashValue ^ number3.hashValue }
}

func ==(lhs:Foo,rhs:Foo)->Bool{
if lhs.numbers==rhs.numbers{
return lhs.number1==rhs.number1 && lhs.number2==rhs.number2 && lhs.number3==rhs.number3
}else{
return false
}
}

关于swift - 计算哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503368/

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