类型和结构的区别

Geo*_*ery 7 julia

我正在尝试学习 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.

有什么不同?

phi*_*ler 6

这在您的来源中非常混乱,因为它混合了语言历史上不兼容时代的不同含义。

  • 最初(我认为是 0.7 之前的版本?),复合类型是用typeor声明的immutable,其中type用于可变类型(现在也bitstype称为“原始类型”)。
  • 现在,我们有mutable structstruct出于同样的目的(并且,与它一致,primitive typeabstract type)。

因此,基本上名称已更改,因此所有定义类型的方法都变得更加一致,并且不可变结构已成为“未标记”的情况。

在这种情况下,“可变”意味着您不能重新分配字段 ( p.x = 3)。这并不意味着字段的内容不能更改,它们碰巧是可变的(something.v[1] = 2如果something是不可变类型也可以工作!)。