Julia 带有数组字段的复合数据类型

Julia 带有数组字段的复合数据类型,julia,Julia,如何在数据类型中声明具有固定大小的数组字段? 我正在创建一个名为CPU的复合数据类型。我知道您可以将字段的类型设置为数组类型,但是您也可以实例化大小,或者我需要创建显式构造函数吗 type CPU //how do I declare memory as an Int8 array of size 64K //memory::Array{Int8,1} //memory = Array{Int8,64000}? OpCode::Int8 Operand::Int8

如何在数据类型中声明具有固定大小的数组字段? 我正在创建一个名为CPU的复合数据类型。我知道您可以将字段的类型设置为数组类型,但是您也可以实例化大小,或者我需要创建显式构造函数吗

type CPU
      //how do I declare memory as an Int8 array of size 64K
//memory::Array{Int8,1}
//memory = Array{Int8,64000}?   
  OpCode::Int8
  Operand::Int8
  Condition::Int8
  PC::Int64
end

数组类型没有大小参数。内存的类型应该是
向量{Int8}
(或者
数组{Int8,1}
向量
只是一维数组的别名)。您可以使用内部构造函数检查大小或抛出错误

为了更加安全,您可以创建一个新类型,该类型只包含一个数组,并定义
长度
获取索引
等的分派,以使数组接口与它所持有的数组相连接,但不定义调整大小的方法。这可能是杀伤力过大(如果你抓住了数组的字段,你仍然可以调整它的大小)


FixedSizarRays或StaticArray在这里不适用,因为数组太大(它们会大大增加编译时间)。

我建议就此单独提问。在我看来,克里斯在回答你提出的第一个问题时已经做得很好了。这次修订现在完全不同了。如果这两个问题是分开的,那么对网站的未来用户会更有用,如果问题没有成为移动目标,那么对回答问题的人也会更好。嗨@JJTO,欢迎来到Stack Overflow!我把你的问题退回到你的第一次复习。请单独提出新问题,因为这对其他有类似问题的用户更有帮助。您可以通过单击问题底部的“编辑的x时间量”链接检索您在修订版中所写的内容(以便将其移至新问题)。点击“并排”链接,查看在凤阳回滚之前帖子的全文。是的,我使用了你建议的内部构造函数,它可以工作。谢谢你的帮助。但我还是很难理解你在第二段中的意思。。。你是说我只为数组类型创建一个新的构造函数,并将length作为参数之一?但是我认为你不能在一个类型中实例化一个固定大小的数组?对不起,我仍然在考虑C/C++的问题,你可以很容易地创建一个具有任意长度数组的结构,所以我不明白为什么在Julia中,你不能做同样的事情。如果你使用
array{Int8,1}
作为一个字段,那么它是一个具有任意长度数组的类型,所以我不明白你的意思。我在第二段中说的是,如果你不喜欢数组有一个
调整大小函数,您可以使用一个字段定义一个不可变类型,该字段是数组,并通过自己定义所有数组函数来定义此新数组的行为(即使
length
计算作为唯一字段的数组的长度,等等)。这个新的数组类型不会有任何开销,但这是过度的。如果您的意思是要随类型一起声明内存,请注意数组的字段包含指向数组的指针,而不是数组本身。无论如何,您都不想在类型中为数组声明内存,因为为了定义类型,您必须定义数组,因此有两个定义会使您进行额外的复制(因此类型最好只指向同一内存段)。这就是你要问的吗?