новая интерпретация массивов - PullRequest
0 голосов
/ 20 ноября 2018

Когда я добавляю новую строку в определение массива, тип моего массива меняется.

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 голосов
/ 20 ноября 2018

Чтобы понять это, посмотрите следующее:

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
...