gpt4 book ai didi

julia - 类型定义中参数类型的作用

转载 作者:行者123 更新时间:2023-12-01 13:32:58 25 4
gpt4 key购买 nike

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

immutable VectorWithNorm1{Vec <: AbstractVector}
vec::Vec
norm::eltype(Vec)
end

但是,这并没有按预期工作:

julia> fieldtype(VectorWithNorm1{Vector{Float64}},:norm)
Any

看来我必须要做

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

并依赖用户不要滥用 Eltype 参数。这是正确的吗?

PS:这只是为了说明问题而编造的例子。这不是我面临的实际问题。

最佳答案

当前对类型参数的任何计算都不起作用(尽管我确实在 JuliaCon 上与 Jeff Bezanson 讨论过这个问题,他似乎愿意解决这个问题)。当前的问题是,当定义参数化类型时,norm 类型的表达式会被求值,并使用 TypeVar 进行调用,但它尚未绑定(bind)到值,这是您真正需要调用它的值,当时该参数实际上已绑定(bind)以创建具体类型。

我遇到过很多次,我想对浮点类型的位数进行一些计算,即计算和使用存储所需的 UInt 的数量一个特定精度的 fp 值,并使用 NTuple{N,UInt} 来保存尾数。

关于julia - 类型定义中参数类型的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38487258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com