【问题标题】:Uninitialized arrays in JuliaJulia 中未初始化的数组
【发布时间】:2014-06-25 19:26:05
【问题描述】:

假设我在 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] = ...

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

【问题讨论】:

    标签: arrays julia


    【解决方案1】:

    您可以使用fill同时创建和填充数组:

    type struct
      u::Int
      v::Int
    end
    
    struct() = struct(0, 0)
    X = fill(struct(), 100)
    X[10].u = 3
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-12-23
        • 2018-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        • 1970-01-01
        相关资源
        最近更新 更多