在 Julia 中,声明 AbstractVector{AbstractVector}

use*_*379 5 abstract-data-type julia

我有兴趣定义一个结构体,该结构体的字段是向量的向量。内部向量有可能(但不一定)是类型SVector(在 StaticArrays 包中定义)。我天真的做法是声明该字段x::AbstractVector{AbstractVector{T}};然而,Julia 并不认为Vector{SVector{3, Float64}}是 的一个实例AbstractVector{AbstractVector}。就此而言,它也不认为Vector{Vector{64}}AbstractVector{AbstractVector}。似乎包含的类型必须是具体类型,或者完全省略。我是否以错误的方式处理这件事?

Bog*_*ski 4

使用AbstractVector{<:AbstractVector},因为这是一个接受其元素类型是 的子类型的任何向量的构造AbstractVector

相反,AbstractVector{AbstractVector}要求元素类型准确AbstractVector