Да, есть кое-что очень похожее на 1:n
Матлаба в Джулии. Это 1:n
.
Хотя есть некоторые различия. Matlab 1:n
создает «вектор-строку», что важно, поскольку Matlab выполняет итерации по столбцам. Если вы посмотрите на 1:n
забавный Matlab, он волшебным образом превращается в плотный массив, в котором хранятся все его элементы, но если вы тщательно избегаете смотреть на него, я думаю, что он может избежать выделения места для него полностью - именно поэтому линтер Matlab рекомендует(1:n)
вместо [1:n]
.
Напротив, 1:n
Джулии - это истинный вектор столбца, который всегда просто использует два целых числа для определения себя. Единственный раз, когда он действительно сохранит все свои элементы в памяти, это если вы попросите об этом (например, с помощью collect
). Тем не менее, почти во всех случаях вы можете использовать его как реальный вектор без сохранения результатов;он очень эффективно генерирует свои элементы на лету. Это может выглядеть немного странно, поскольку оно просто печатается как 1:n
, но на самом деле это массив. Вы можете даже сделать линейную алгебру с этим:
julia> r = 1:4
1:4
julia> r[3]
3
julia> A = rand(0:2, 3, 4)
3×4 Array{Int64,2}:
0 1 2 2
1 1 1 2
1 0 2 1
julia> A * r
3-element Array{Int64,1}:
16
14
11