我尝试预分配包含自定义类型的数组。我知道对于像Int
这样的简单类型,我可以这样做:
Array(Int, 24)
预先分配一个包含24个整数的数组。但是,当我为自定义类型执行相同操作时:
type spam
foo
baz
end
spam_alloc = Array(spam, 24)
24-element Array{spam,1}:
#undef
#undef
<snip>
#undef
#undef
#undef
我无法访问spam_alloc
的任何元素:
spam_alloc[1]
ERROR: access to undefined reference
in getindex at array.jl:277
所以我的问题是如何让这个工作。或者有更好的方法来处理自定义类型组?
答案 0 :(得分:4)
如果值以内联方式存储(bitstypes和immutables),则Array的内容只是随机内存。如果没有,则对象以盒装方式存储,因此它会跟踪分配了哪些对象。这是预分配数组的正确方法,您可以像使用任何其他数组一样分配给它:
spam_alloc[1] = spam(1,2)