1

我尝试预分配一个包含自定义类型的数组。我知道对于简单的类型,比如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

所以我的问题是如何让这个工作。还是有更好的方法来处理自定义类型组?

4

1 回答 1

4

如果值是内联存储的(位类型和不可变),则数组的内容只是随机内存。如果不是,则将对象存储在盒中,因此它会跟踪分配了哪些对象。这是预分配数组的正确方法,您可以像分配任何其他数组一样分配给它:

spam_alloc[1] = spam(1,2)
于 2013-12-29T09:18:51.883 回答