在Julia中将类型参数作为函数参数引用
我想在Julia中做一个“整数mod p”类型。(我肯定已经有了一个套餐,这只是一个个人练习。) 我在定义add时遇到一个错误,表示p未定义。如何从内部添加引用p (注:我可以这样做在Julia中将类型参数作为函数参数引用,julia,Julia,我想在Julia中做一个“整数mod p”类型。(我肯定已经有了一个套餐,这只是一个个人练习。) 我在定义add时遇到一个错误,表示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与每个数字一起存储。我觉得这将是低效的,我的想法是在泛化过程中,它将是真正低效的。我宁
type Intp
v::Int8
p
end
function add(a::Intp,b::Intp)
return Intp((a.v + b.v) % a.p,p)
end
但这将要求p与每个数字一起存储。我觉得这将是低效的,我的想法是在泛化过程中,它将是真正低效的。我宁愿p只为类型指定一次,并在将该类型的东西作为参数的函数中引用。)您的第一个示例非常接近,但是您需要在方法名称和签名之间包含
{p}
,如下所示:
function add{p}(a::Intp{p},b::Intp{p})
return Intp{p}((a.v + b.v) % p)
end
否则,您正在为一对Intp{p}
值编写一个方法,其中p
是p
的当前特定值,在您的情况下,该值恰好是没有值的,因此会出现错误消息。Julia方法的一般特征是:
{}
中键入参数(可选)()
谢谢你,斯蒂芬。我喜欢你的语言。
function add{p}(a::Intp{p},b::Intp{p})
return Intp{p}((a.v + b.v) % p)
end