我可以使用pass-by-reference来更改容器的大小吗



我希望我的函数在容器的末尾添加一个元素,尤其是矩阵。我似乎可以使用pass-by-reference来更改容器中现有的元素,但如果我试图使用concat((来更改容器的大小,我会得到错误的结果。

下面是一个工作示例:

v=[1];
r(~x)=x=concat(x,2);
v \ Should be [1,2]
%3 = [1]

我可以通过引用来完成此操作吗?还是需要通过值传递并进行新的赋值?如果是,这种行为是意料之中的事吗?我使用的是GP/Pari2.15.0。

首先,为了将其作为引用传递,还必须显式地用"当将v传递给r:CCD_ 1时。

还有其他问题:

  • concat((的签名没有接收到作为引用的向量
  • 向量是不可变的,所以没有办法用它来实现你想要的

您应该使用列表:

v = List([1])
listput(v, 2)

为了得到这些值,它就像任何使用";[]";。

相关内容

  • 没有找到相关文章

最新更新