Julia 参数类型在类型定义中的作用

Julia 参数类型在类型定义中的作用,julia,Julia,假设我想将I向量与其范数一起存储。我希望相应的类型定义简单明了: immutable VectorWithNorm1{Vec <: AbstractVector} vec::Vec norm::eltype(Vec) end 看来我不得不这么做了 immutable VectorWithNorm2{Vec <: AbstractVector, Eltype} vec::Vec norm::Eltype end immutable VectorWit

假设我想将I向量与其范数一起存储。我希望相应的类型定义简单明了:

immutable VectorWithNorm1{Vec <: AbstractVector}
    vec::Vec
    norm::eltype(Vec)
end
看来我不得不这么做了

immutable VectorWithNorm2{Vec <: AbstractVector, Eltype}
    vec::Vec
    norm::Eltype
end

immutable VectorWithNormal2{Vec当前对类型参数的任何计算都不起作用
(尽管我确实在朱利亚康与杰夫·贝赞森讨论过这个问题,他似乎愿意解决这个问题)。
当前的问题是,
norm
类型的表达式在定义参数化类型时进行求值,并使用
TypeVar
调用,但在该参数实际绑定到创建具体类型时,它还没有绑定到一个值,而这正是您真正需要调用它的值


我经常遇到这种情况,我想对浮点类型的位数进行一些计算,即计算并使用存储特定精度的fp值所需的
UInt
s的数量,并使用
NTuple{N,UInt}
保存尾数。

将其存储为
符号如何?您可以详细说明一下吗?问题是您可以在构造函数中执行运行时检查,但不能在类型中强制执行该检查
不可变的Foo{T};vec::Vector{T};norm::T;end
(对于单行定义很抱歉——希望在
处拆分是有意义的!您失去了将其设置为任何
抽象向量
的能力,但您需要它吗?在这种情况下,我可能不需要任意的
抽象向量
,但在我的应用程序中我需要。
immutable VectorWithNorm2{Vec <: AbstractVector, Eltype}
    vec::Vec
    norm::Eltype
end