小编Gom*_*B0T的帖子

在 Julia 中递归检查结构的 `==` 吗?好像没有

在 Julia 中检查关于“struct”对象的相等性时,有一种我不明白的行为。文档指出::“对于集合,==通常在所有内容上递归调用,但也可能考虑其他属性(如数组的形状) ”。虽然它似乎是结构体,但它被强制转换===为什么的。这是一个最小的工作示例:

正如预期的那样:

string1 = String("S")
string2 = String("S")
string1 == string2 
Run Code Online (Sandbox Code Playgroud)

=> 返回真

和 :

set1 = Set(["S"])
set2 = Set(["S"])
set1 == set2
Run Code Online (Sandbox Code Playgroud)

=> 返回真


但 !这就是我不明白的:

struct StringStruct
    f::String
end
stringstruct1 = StringStruct("S")  
stringstruct2 = StringStruct("S")  
stringstruct1 == stringstruct2  
Run Code Online (Sandbox Code Playgroud)

=> 返回真

然而 :

struct SetStruct  
    f::Set{String}  
end
setstruct1 = SetStruct(Set(["S"]))
setstruct2 = SetStruct(Set(["S"]))
setstruct1 == setstruct2 
Run Code Online (Sandbox Code Playgroud)

=> 返回假


对我来说,它看起来像是===对结构的元素进行了测试。

所以我的问题是:==在结构上测试时的真实行为是什么?它是投射==还是===?如果它==按照文档说明进行转换,我误解的重点是什么?

struct julia

4
推荐指数
1
解决办法
63
查看次数

标签 统计

julia ×1

struct ×1