在for循环中填充任意类型的多维数组

时间:2019-03-29 18:58:23

标签: julia

我已经定义了多维数组-Multi_arr=Array{Any, 2}(undef, length(n), 6)。目的是在for循环中填充数组。当我尝试从数组访问元素时,例如Multi_arr[1,1];返回以下错误

UndefRefError: access to undefined reference

Stacktrace:
 [1] getindex(::Array{Any,2}, ::Int64, ::Int64) at ./array.jl:732
 [2] top-level scope at In[106]:1

在这种情况下,元素访问与常规数组有什么不同吗?

1 个答案:

答案 0 :(得分:1)

您必须先分配一个元素的值,然后再尝试访问它。在显示数组时,Julia通过显示window.fetch("/path/to/some/api", { redirect: "error" }); 来表示这种情况,例如:

#undef

此属性有两个好处:

  • 创建这样的数组很快
  • 您可能会在代码中遇到错误(尝试访问未初始化的位置)

(请注意,julia> Matrix{Any}(undef, 2, 3) 2×3 Array{Any,2}: #undef #undef #undef #undef #undef #undef 仅是非位类型的默认值)

您可以使用#undef函数检查单元格是否在此类数组中的#undef

如果要在数组中设置一些默认的非信息性值,则可以读取该值,然后传递isassignednothing而不是missing,例如:

undef

现在,您可以在分配某些内容之前从此类数组中读取数据(并且可能应该将julia> Matrix{Any}(nothing, 2, 3) 2×3 Array{Any,2}: nothing nothing nothing nothing nothing nothing julia> Matrix{Any}(missing, 2, 3) 2×3 Array{Any,2}: missing missing missing missing missing missing nothing视为未分配的标记)。