我创建了一个参数为整数的参数化类型。以下是一个合理的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
为你想做的事而努力?