定义变量$a
:
my $a = 123;
定义与$a
关联的无形变量:
my \b = $a;
我们可以通过$a
更改b
的值:
b = 234;
say $a;
应显示234
。
我的理解是有效的,因为b
设置为与$a
相关联的容器。
有没有办法定义匿名容器?即像这样的东西:
my \b = container(123);
由于b
与容器相关联,因此分配将如第一个示例中那样工作:
b = 234;
答案 0 :(得分:3)
注意!! 我的解决方案"在这个答案中反映了破碎的思想,正如我在@BradGilbert交流中所揭示的那样。我可能有一天会删除这个答案但是现在我只是在上面的标题中添加了 state 限定符/链接,这个希望足够响亮的段落。
my \a = $ = 123;
say a; # 123
a = 100;
a--;
say a; # 99
my \list = (1,2,3); # assign to anon List container
say list >>+>> a; # (100,101,102)
my \array = [1,2,3]; # assign to anon Array container
array[2] = 42;
say array; # [1 2 42]
a = array[1]; # assign to anon Scalar within Array
a = "yep";
say array; # [1 yep 42]
my \hash = {:a, :b, :c}; # assign to anon Hash container
say hash<b>; # True
# etc.
答案 1 :(得分:0)
这似乎是一种分配b
容器的方法,该容器在与b
相同的范围内没有其他名称:
my \b = { my $a = 123; $a; }();
b = 234;
say b;
因此,采用这种方法,container
可以定义如下:
sub container(\val) is rw { my $var = val; $var; }
示例:
my \b = container(123);
b = 234;
say b;
显示234
。