未定义

UndefInitializer 是表示「初始值未定义」的单例类型,它的唯一实例是 undef。 当它被用于容器构造时,可以指定值的类型。若该类型是纯数据类型,则内存被直接分配,得到的值未被覆盖 [1]

julia> Vector{Pair{Int, Int}}(undef, 1)
1-element Vector{Pair{Int64, Int64}}:
 0 => 434257936

julia> mutable struct P x::Int; y::Pair{UInt8,UInt8} end

julia> v=Vector{P}(undef, 1) # P 不是纯数据类型
1-element Vector{P}:
 #undef

julia> isassigned(v, 1)
false

julia> v[1]
ERROR: UndefRefError: access to undefined reference

julia> r=Ref{P}()
Base.RefValue{P}(#undef)

julia> r[]
ERROR: UndefRefError: access to undefined reference

  • 1

    硬件中原有的值可能是其它程序写入并释放的