将SVector推入Julia中SVector的向量

将SVector推入Julia中SVector的向量,julia,Julia,我想把一个SVector(由提供)推到一个SVector的向量中。以下代码是我的试用版: using StaticArrays lst = Vector{SVector{2, Float64}}[] a = SVector(1, 2) push!(lst, a) 但它会导致以下错误: ERROR: LoadError: MethodError: Cannot `convert` an object of type Int64 to an object of type SArray{Tuple{

我想把一个SVector(由提供)推到一个SVector的向量中。以下代码是我的试用版:

using StaticArrays
lst = Vector{SVector{2, Float64}}[]
a = SVector(1, 2)
push!(lst, a)
但它会导致以下错误:

ERROR: LoadError: MethodError: Cannot `convert` an object of type Int64 to an object of type SArray{Tuple{2},Float64,1,2}

如何修复它?

您所犯的错误是,您创建了一个
数组的
数组的
一个
SVector的
T[]
创建类型为
T
的空数组

# This creates an empty array of type Float64
julia> lst = Float64[]
0-element Array{Float64,1}

# This creates an empty array of a Float64 array
julia> lst = Vector{Float64}[]
0-element Array{Array{Float64,1},1}
因此,您需要将数组重新定义为
SVector
的数组

julia> lst = SVector{2, Float64}[] # an empty 1D array(i.e. Vector) of `SVector`
0-element Array{SArray{Tuple{2},Float64,1,2},1}

julia> a = SVector(1, 2)
2-element SArray{Tuple{2},Int64,1,2}:
 1
 2

julia> push!(lst, a)
1-element Array{SArray{Tuple{2},Float64,1,2},1}:
 [1.0, 2.0]
您也可以使用此方法代替空数组定义:

lst = Vector{SVector{2, Float64}}(undef, 0) # this creates a `Vector` of `SVector` of size 0 (empty)