在 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)
=> 返回假
对我来说,它看起来像是===对结构的元素进行了测试。
所以我的问题是:==在结构上测试时的真实行为是什么?它是投射==还是===?如果它==按照文档说明进行转换,我误解的重点是什么?