如何将项目上下文数组分配给位置?

How can one assign an item contextualized Array to a positional?

在 Rakudo Perl 6 中,item$ 可用于计算项上下文中的表达式。参见 https://docs.perl6.org/routine/item

我正在使用 returns 项目上下文化数组的库。删除上下文化以便将其分配给 @ 变量的正确方法是什么?

例如:

my @a = $[<a b c>];
dd @a; # Outputs: Array @a = [["a", "b", "c"],]

展平它:

my @a = $[<a b c>].flat;

dd @a; # Array @a = ["a", "b", "c"]

Perl 就是 Perl,实现它的方法不止一种,例如

dd my @ = @$[<a b c>];     # via original array, equivalent to .list
dd my @ = $[<a b c>][];    # via original array, using zen slicing
dd my @ = |$[<a b c>];     # via intermediate Slip, equivalent to .Slip
dd my @ = $[<a b c>].flat; # via intermediate flattening Seq

最明确的解决方案可能是通过 @.list 强制执行列表上下文,我会避免 .flat 调用,因为它的语义含义略有不同。

提醒一下,请注意列表赋值是复制,但如果您使用的方法之一只是从其标量容器中提取原始数组,您也可以使用绑定。但是,在那种情况下,您甚至不需要手动去容器化为

dd my @ := $[<a b c>];

还可以将数组作为 list-y 返回。