如何从函数传递指向容器的指针?

我可以将容器绑定到新名称:

my %h;
my $p := %h{ "a" }{ "b" }{ "c" };
$p = 1;
say %h;

预期输出:

{a => {b => {c => 1}}}

但是如果我需要从子程序返回这样的指针呢?

my %h;
sub get-pointer {
    my $p := %h{ "a" }{ "b" }{ "c" };
    return $p;
};
my $q := get-pointer();
$q = 1;
say %h;

给出:

Cannot assign to a readonly variable or a value

那件事让我感到困惑 -$p.WHERE$q.WHERE给出相同的地址,那么为什么它突然变成只读的?

回答

没关系,我有一些隧道视野的时刻,并希望别名表现得像 C 指针。

发现它在Raku 文档中清楚地解释了。

sub 返回将返回值,而不是容器。那些是不可变的

要返回可变容器,请使用 return-rw。


以上是如何从函数传递指向容器的指针?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>