问题描述
请看这个例子
f(a,{e})={ispower(a,3,&e)}
我这样做是为了将结果存储在 e 中,但是当我调用函数时 f(27,t) 程序不会在 t 中存储“3” 任何帮助
解决方法
你不能有指向你自己函数的指针可选参数(至少在 2.11 版本中没有)
如果您更改 f
的定义以按值返回值 e
:
f(a)={my(e); [ispower(a,3,&e),e]}
现在 f(27)
返回数组 [1,3]
。
在最新的 2.13 中,应该有一种通过引用传递参数的方法:参见 https://pari.math.u-bordeaux.fr/archives/pari-announce-20/msg00006.html
但是,语法建议您需要定义 f(a,~e) = ispower(a,&e)
,并且您仍然需要将其用作 f(a,~t)
或 f(a,&t)
以将值放入 t
。 (老实说,我不确定这是否可行 - 2.13 增强功能的目的是允许通过引用调用 Maps 和 Lists,而在以前的版本中,它们是按值调用复制的)。
顺便说一下,{} 没有将参数标记为可选。所有参数始终是可选的。如果您不提供值,则 PARI 将不分配参数。