我想在Julia中创建一个“整数模p”类型。(我确定已经有一个用于此的包,这只是个人练习。)
我在定义 add 函数时遇到了一个错误,提示 p 未定义。我该如何在 add 函数内引用 p?
(注:我可以尝试像这样 )
但是这将需要每个数都存储p,我觉得这会很低效,而且我想到了一般化的情况下会非常低效。我更希望只为类型指定p一次,并在接受该类型参数的函数中引用它。
type Intp{p}
v::Int8
end
function add(a::Intp{p},b::Intp{p})
return Intp{p}((a.v + b.v) % p)
end
我在定义 add 函数时遇到了一个错误,提示 p 未定义。我该如何在 add 函数内引用 p?
(注:我可以尝试像这样 )
type Intp
v::Int8
p
end
function add(a::Intp,b::Intp)
return Intp((a.v + b.v) % a.p,p)
end
但是这将需要每个数都存储p,我觉得这会很低效,而且我想到了一般化的情况下会非常低效。我更希望只为类型指定p一次,并在接受该类型参数的函数中引用它。
where
子句可以在函数体中访问类型参数:function add(a::Intp{p},b::Intp{p}) where {p}
答案https://dev59.com/v1gQ5IYBdhLWcg3w-o1w#41940710提供了有关此语法更改的其他信息。 - Fred Schleifer