Julia数组是同构的吗?

Kir*_*ar. 4 arrays types julia

一方面,如果我有x=[1,2,3],则无法添加"foo"x,但是如果我以开头x=[1,2,3,"foo"],则联合类型为Any,则可以将所需的内容添加到数组中。说Julia数组是齐次的是否正确?因为我可以创建的数组Any

Mas*_*son 6

默认情况下,Julia将限制给定数组为尽可能特定的元素类型(eltype)。但是,julia具有一种特殊的语法,可以使用您喜欢的任何Eltype创建数组。所以,要创建eltype一个数组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"
Run Code Online (Sandbox Code Playgroud)

出现这种情况的原因是,如果我们可以将数组限制为特定的具体类型,则可以进行一些主要的性能优化。如果您有一个带有eltype的数组Any,则不能将内容密集地打包在内存中。