我试图制作一个"整数mod p"输入朱莉娅。 (我确定已经有了这个包,这只是个人练习。)
type Intp{p}
v::Int8
end
function add(a::Intp{p},b::Intp{p})
return Intp{p}((a.v + b.v) % p)
end
我在定义添加时遇到错误,表示p未定义。如何从添加内部引用p?
(注意:我可以做类似
的事情type Intp
v::Int8
p
end
function add(a::Intp,b::Intp)
return Intp((a.v + b.v) % a.p,p)
end
但这需要将p存储在每个数字中。我觉得这样效率会很低,而且我会考虑一下它的效率会非常低效。我希望只为类型指定一次,并在函数中引用,将该类型的东西作为参数。)
答案 0 :(得分:7)
您的第一个示例非常接近,但您需要在方法名称和签名之间包含{p}
,如下所示:
function add{p}(a::Intp{p},b::Intp{p})
return Intp{p}((a.v + b.v) % p)
end
否则,您正在为一对Intp{p}
值编写方法,其中p
是p
的当前特定值 - 在您的情况下恰好是没有任何价值,因此错误信息。所以Julia方法的一般签名是:
{ }
(可选)( )