gpt4 book ai didi

dictionary - Julia 的字典方法 `haskey` 在键存在时返回 false

转载 作者:行者123 更新时间:2023-12-03 21:00:11 24 4
gpt4 key购买 nike

我是 Julia 的新手,我不确定为什么最后一行的计算结果为 false:

type Point{T}
x::T
y::T
end

D = [Point(1.,2.) => 42]
haskey(D, Point(1., 2.)) #False!

显然 key 存在,所以这里发生了什么!?

编辑。

如果我不使用 Point 类,它工作正常:

D = [(1.,2.) => 42]
haskey(D, (1., 2.)) #True!

我们不能为字典键类型使用类吗?

最佳答案

但是看看这个:

type Point{T}
x::T
y::T
end
P = Point(1., 2.)
D = [P => 42]
haskey(D, P)

评估为 true

如果您使用相同的对象,它会起作用,但如果您使用具有相同字段值的 2 个对象,它就不起作用。请注意,使用 type 定义的对象是可变的,因此即使在您使用 Point 作为键之后,您仍然可以在字典不知道的情况下更改其字段的值。字典需要散列一些不能改变的东西,比如类型对象的标识,而不是当前的字段值。由于元组是不可变的,它们的值可以安全地用作键。你也可以使用

immutable Point{T}
x::T
y::T
end

关于dictionary - Julia 的字典方法 `haskey` 在键存在时返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30586630/

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