类型定义

时间:2016-10-20 17:50:52

标签: types julia

我正在尝试创建一个嵌套的类型,但需要最低级别作为类型规范的一部分才能从右侧的parmae​​terized抽象类型中进行子类型化。但是,出现以下错误:

immutable Type1{T} <: AbstractT{T}
  x::Vector{T}
end
immutable Type2{T,T2} <: AbstractT{T2}
  x::Vector{T{T2}}
end

有没有一种方法可以将T2用于规范?

1 个答案:

答案 0 :(得分:9)

目前尚未实施这种类型的计算。标准的解决方法是这样的:

immutable Type2{T2,VTT2} <: AbstractT{T2}
  x::VTT2
end
Type2{T2}(x::Vector{Type1{T2}}) = Type2{T2, typeof(x)}(x)

如果您真的担心有人违背背后的规则,您可以在内部构造函数中进一步强制执行约束。