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

Julia 在for循环中填充任意类型的多维数组,julia,Julia,我定义了一个多维数组-Multi_arr=array{Any,2}undef,lengthn,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 a

我定义了一个多维数组-Multi_arr=array{Any,2}undef,lengthn,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

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

在尝试访问元素之前,必须先为元素赋值。Julia通过在显示阵列时显示undef来表示此类情况,例如:

julia> Matrix{Any}(undef, 2, 3)
2×3 Array{Any,2}:
 #undef  #undef  #undef
 #undef  #undef  #undef
该物业有两个好处:

创建这样一个数组很快 您可以在试图访问未初始化位置的代码中捕获错误 请注意,undef仅是非bits类型的默认值

您可以使用isassigned函数检查此类数组中的单元格是否未定义

如果要在可以读取的数组中设置一些默认的非信息值,请不传递任何内容或不传递任何内容,而不是未定义,例如:

现在,您可以在分配某些内容之前读取这样一个数组,然后可能应该将nothing或missing视为Not assignment的哨兵

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