我可以将容器绑定到新名称:
my %h;
my $p := %h{ "a" }{ "b" }{ "c" };
$p = 1;
say %h;
Run Code Online (Sandbox Code Playgroud)
预期输出:
{a => {b => {c => 1}}}
Run Code Online (Sandbox Code Playgroud)
但是如果我需要从子程序返回这样的指针呢?
my %h;
sub get-pointer {
my $p := %h{ "a" }{ "b" }{ "c" };
return $p;
};
my $q := get-pointer();
$q = 1;
say %h;
Run Code Online (Sandbox Code Playgroud)
给出:
Cannot assign to a readonly variable or a value
Run Code Online (Sandbox Code Playgroud)
那件事让我感到困惑 -$p.WHERE
并$q.WHERE
给出相同的地址,那么为什么它突然变成只读的?