具有数组字段的复合数据类型

JJT*_*JTO 3 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
  Condition::Int8
  PC::Int64
end
Run Code Online (Sandbox Code Playgroud)

Chr*_*kas 7

数组类型没有size参数.内存的类型将是Vector{Int8}(或者Array{Int8,1},Vector只是一维数组的别名).您可以使用内部构造函数来检查大小或抛出错误.

为了更加安全,您可以创建一个新类型,它只有一个数组并定义了,等等的调度length,getindex以便为它所拥有的数组创建一个数组接口,但是没有定义调整大小的方法.这可能是矫枉过正(如果你抓住数组的字段,你仍然可以调整它的大小).

FixedSizeArrays或StaticArrays在这里不适用,因为数组太大(它们会大量增加编译时间).