我有以下代码:
julia> struct Point
x
y
end
julia> Point(1,2) == Point(1,2)
true
julia> mutable struct Points
x
y
end
julia> Points(1,2) == Points(1,2)
false
Run Code Online (Sandbox Code Playgroud)
为什么两个对象在是普通结构时相等,而在可变结构时不相等?
原因是默认情况==下回退到===. 现在的工作方式===是(引用文档):
首先比较 x 和 y 的类型。如果它们相同,则可变对象按内存中的地址进行比较,而不可变对象(例如数字)则按位级别的内容进行比较。
因此,对于Point不可变的 ,执行内容的比较(在您的情况下是相同的)。WhilePoints是可变的,因此比较传递对象的内存地址,它们是不同的,因为您创建了两个不同的对象。