我已经定义了多维数组-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
在这种情况下,元素访问与常规数组有什么不同吗?
答案 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
。
如果要在数组中设置一些默认的非信息性值,则可以读取该值,然后传递isassigned
或nothing
而不是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
视为未分配的标记)。