当我在数组定义中添加换行符时,数组的类型会更改。
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}
答案 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