Julia 在for循环中填充任意类型的多维数组
我定义了一个多维数组-Multi_arr=array{Any,2}undef,lengthn,6。目的是在for循环中填充数组。当我试图从数组中访问一个元素时,例如Multi_arr[1,1];返回以下错误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
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