首页 > 解决方案 > 类型和结构的区别

问题描述

我正在尝试学习 Julia,并且正在阅读一本书,该书在关于复合类型的一章中显示了以下两个代码示例:

1.

type Points
    x::Int64
    y::Int64
    z::Int64
end

2.

struct Point
    x::Int
    y::Int
    z::Int
end

然而,这本书并没有解释,何时使用struct以及何时使用type.

有什么不同?

标签: julia

解决方案


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

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

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

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


推荐阅读