我想将SVector(由JuliaArrays/StaticArrays.jl提供)推入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}
我该如何解决?
答案 0 :(得分:1)
您犯的错误是您在Array
的{{1}}中创建了Array
。 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]