【发布时间】:2021-06-22 09:11:28
【问题描述】:
在下面的 Julia 代码中,由于 BigInt 是可变结构,我们的相等性不适用于 T{BigInt}。但是,== 由 BigInt 为它们自己明确定义。
julia> struct T{X}
x :: X
end
julia> T{Int64}(1) == T{Int64}(1), T{Int64}(1) === T{Int64}(1)
(true, true)
julia> T{BigInt}(1) == T{BigInt}(1), T{BigInt}(1) === T{BigInt}(1)
(false, false)
julia> T{BigInt}(1).x == T{BigInt}(1).x, T{BigInt}(1).x === T{BigInt}(1).x
(true, false)
有没有办法:
- 为这类结构自动生成
==,在每个字段上递归==, - 或将可变结构的不可变版本作为成员(与 C++ 中的
const一样),而不是使用与BigInt等效的不可变?
我的目标是避免在包含大量此类结构的包中使用样板代码。
【问题讨论】:
标签: struct julia immutability equality