如何将项目上下文数组分配给位置?
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 返回。
在 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 返回。