Julia 阵列的新线敏感解释

Julia 阵列的新线敏感解释,julia,Julia,当我向数组定义中添加换行符时,数组的类型会发生变化 julia> a = [[1]] 1-element Array{Array{Int64,1},1}: [1] julia> a = [[1] ] 1-element Array{Int64,1}: 1 我认为它们都应该返回相同的结果,即类型为Array{Array{Int64,1},1},为了理解这一点,请参见以下内容: julia> :([[1] ]) :([[1];]) 您可

当我向数组定义中添加换行符时,数组的类型会发生变化

julia> a = [[1]]
1-element Array{Array{Int64,1},1}:
 [1]

julia> a = [[1]

       ]
1-element Array{Int64,1}:
 1

我认为它们都应该返回相同的结果,即类型为
Array{Array{Int64,1},1}

,为了理解这一点,请参见以下内容:

julia> :([[1]

         ])
:([[1];])
您可以看到添加新行被重写为
vcat
操作

这样做的原因是允许这样写:

julia> x = [1 2
            3 4]
2×2 Array{Int64,2}:
 1  2
 3  4
你的例子正好碰到了这种语法的一个极端情况

但是,请注意,如果没有额外的空行
vcat
,则不会调用:

julia> :([[1]
         ])
:([[1]])
另一个值得了解的用例是:

julia> [[1, 2]
        [3, 4]]
4-element Array{Int64,1}:
 1
 2
 3
 4
变量也是如此(在某些情况下可以提高代码可读性):

julia> a = [1,2]
2-element Array{Int64,1}:
 1
 2

julia> b = [3, 4]
2-element Array{Int64,1}:
 3
 4

julia> [a
        b]
4-element Array{Int64,1}:
 1
 2
 3
 4