我试图创建一个嵌套的类型,但需要最低级别作为类型规范的一部分,以便能够从右边的parmaeterized抽象类型子类型.但是,出现以下错误:
immutable Type1{T} <: AbstractT{T}
x::Vector{T}
end
immutable Type2{T,T2} <: AbstractT{T2}
x::Vector{T{T2}}
end
Run Code Online (Sandbox Code Playgroud)
是否有一个很好的方法来获得规范的T2?
目前尚未实现这种类型的计算.标准的解决方法是这样的:
immutable Type2{T2,VTT2} <: AbstractT{T2}
x::VTT2
end
Type2{T2}(x::Vector{Type1{T2}}) = Type2{T2, typeof(x)}(x)
Run Code Online (Sandbox Code Playgroud)
如果您真的担心有人违背背后的规则,您可以在内部构造函数中进一步强制执行约束.