Джулия по умолчанию ограничит данный массив максимально возможным типом элемента (eltype). Однако у julia есть специальный синтаксис для создания массива с любым типом, который вам нравится. Итак, чтобы создать массив с типом T
, вы просто пишете T[x, y, z]
вместо [x, y, z]
. Для вашего примера это будет
julia> v = Any[1,2,3]
p3-element Array{Any,1}:
1
2
3
julia> push!(v, "foo")
4-element Array{Any,1}:
1
2
3
"foo"
Причина такого поведения заключается в том, что если мы можем ограничить массив конкретным конкретным типом, то можно сделать несколько важных оптимизаций производительности. Если у вас есть массив с типом Any
, то содержимое не может быть плотно упаковано в память.