我正在尝试学习 Julia 并且正在阅读一本书,该书在关于复合类型的章节中显示了以下两个代码示例:
1.
type Points
x::Int64
y::Int64
z::Int64
end
Run Code Online (Sandbox Code Playgroud)
2.
struct Point
x::Int
y::Int
z::Int
end
Run Code Online (Sandbox Code Playgroud)
然而,这本书没有解释何时使用struct以及何时使用type.
有什么不同?
这在您的来源中非常混乱,因为它混合了语言历史上不兼容时代的不同含义。
typeor声明的immutable,其中type用于可变类型(现在也bitstype称为“原始类型”)。mutable struct和struct出于同样的目的(并且,与它一致,primitive type和abstract type)。因此,基本上名称已更改,因此所有定义类型的方法都变得更加一致,并且不可变结构已成为“未标记”的情况。
在这种情况下,“可变”意味着您不能重新分配字段 ( p.x = 3)。这并不意味着字段的内容不能更改,它们碰巧是可变的(something.v[1] = 2如果something是不可变类型也可以工作!)。