Вы должны сначала присвоить значение элемента, прежде чем пытаться получить к нему доступ.Джулия сообщает о таких ситуациях, показывая #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
или missing
как страж без назначения).