将参数类型的范围限制为整数值

  • 本文关键字:整数 范围 参数 类型 julia
  • 更新时间 :
  • 英文 :


我创建了一个参数为整数的参数化类型。以下是一个合理的MWE。

struct InverseTaylor{N}
a::Vector{Float64}
function InverseTaylor{N}() where {N}
a = something_done_with_n(N)
new(a)
end
end

但是我不高兴where {N}没有进一步约束N

在写这个问题的时候,我能想到的是在内部构造函数中添加一个验证,就像这样:

N isa Int || error("$N should be an integer")

但我还是觉得应该有更好的方法。

注:我知道在整数值上使用参数化类型有一些警告,但我觉得如果语言允许这个概念,那么也应该有一种方法来明确我对结构体定义中N的期望。

would

struct InverseTaylor{N}
a::Vector{Float64}
function InverseTaylor{N}() where N <: Integer
a = something_done_with_n(N)
new(a)
end
end

为你想做的事而努力?

最新更新