假设我已经将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
在此示例中,::Int
和N+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,而我想要一个整数。那么有一种方法可以使类型依赖于变量吗?