在Julia中初始化空向量的两种等效方法

时间:2017-09-06 22:50:50

标签: arrays initialization julia

用于初始化Vector{Type}()的空向量的表达式Type[]Type在Julia中完全等效吗?是否首选语法?

1 个答案:

答案 0 :(得分:8)

是的,它们实际上完全相同:

julia> @code_typed Vector{Any}()
CodeInfo(:(begin
        return $(Expr(:foreigncall, :(:jl_alloc_array_1d), Array{Any,1}, svec(Any, Int64), Array{Any,1}, 0, 0, 0))
    end))=>Array{Any,1}

julia> @code_typed Any[]
CodeInfo(:(begin
        return $(Expr(:foreigncall, :(:jl_alloc_array_1d), Array{Any,1}, svec(Any, Int64), Array{Any,1}, 0, 0, 0))
    end))=>Array{Any,1}

Type[]语法实际上与所有其他x[]语法一样 - 它扩展为getindex(Type)there you'll see它是根据Array构造函数定义的。这只是一个方便的速记。 我不知道任何一个比另一个更喜欢的风格指南。