换行敏感的数组解释

时间:2018-11-19 22:30:42

标签: 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}

1 个答案:

答案 0 :(得分:2)

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

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