具有与超类型不同的参数的子类型

时间:2016-11-22 20:24:35

标签: julia subtype

假设我已经将Type定义为Julia中某个数组的别名,但有附加信息,让我们说只是一个字符串

abstract A{T,N}
   foo::AbstractArray{T,N}
   bar::Real
end

我想定义一个可能有另一个元素的子类型,但是如果N+1的类型为B,则还要将该类型的第二个参数限制为整数,并且值为N }。

type B{N::Int} <: A{T,N+1}
   baz::Float64
end

在此示例中,::IntN+1似乎都不正确,也不是语法上的。我对朱莉娅来说有点新鲜,但我在最后几天读了很多,但找不到解决办法。

我怎样才能做这种“受限制”的子类型?

编辑:也许还有另外一个小故障。对于超类型,N应该能够是指定foo大小的向量,而对于子类型,它应该是指定向量长度的整数。

编辑2 :我打算使用我现在编辑的abstract A,如评论中所述

编辑3 :所以我认为一个问题似乎是,abstract类型不能有字段(我不明白为什么,但无论如何),然后我仍然可以' t声明类型参数例如只是一个整数。 那我该怎么做呢

abstract A{T,N}
type B{N::Integer} <: A{Float64,N+1}
  v:FixedVector{N+1,Float64}
end

我总是遇到问题,N始终(无论我做什么)保持Typevar,而我想要一个整数。那么有一种方法可以使类型依赖于变量吗?

0 个答案:

没有答案