2014-06-25 58 views
6

假设我在Julia中有一些复合类型的数组。我知道我不能简单地将值赋给数组,因为它的元素是未定义的。例如,代码Julia中未初始化的数组

type struct 
    u::Int64 
    v::Int64 
end 

X = Array(struct, 100) 
X[10].u = 3 

会产生这样的错误:

ERROR: access to undefined reference 
in getindex at array.jl:277 
in include at boot.jl:238 
in include_from_node1 at loading.jl:114 

什么是解决这个问题的标准方法是什么?现在我只是做类似的:

samples = Array(Sample1d, num_samples) 
fill!(samples, Sample1d(0, 0, 0)) 
samples[i] = ... 

有没有更简洁或朱利安的方式来做到这一点?

回答

1

您可以将值分配给数组中未初始化的位置。您无法从未初始化的位置提取值。

5

您可以使用fill创建并填写在同一时间的数组:

type struct 
    u::Int 
    v::Int 
end 

struct() = struct(0, 0) 
X = fill(struct(), 100) 
X[10].u = 3