Julia 参数类型在类型定义中的作用
假设我想将I向量与其范数一起存储。我希望相应的类型定义简单明了: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
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