在 Rakudo Perl 6中item
或$
可用于评估项目上下文中的表达式。见https://docs.perl6.org/routine/item
我正在使用一个返回项目上下文化数组的库。删除上下文以便将其分配给@
变量的正确方法是什么?
例如:
my @a = $[<a b c>];
dd @a; # Outputs: Array @a = [["a", "b", "c"],]
在 Rakudo Perl 6中item
或$
可用于评估项目上下文中的表达式。见https://docs.perl6.org/routine/item
我正在使用一个返回项目上下文化数组的库。删除上下文以便将其分配给@
变量的正确方法是什么?
例如:
my @a = $[<a b c>];
dd @a; # Outputs: 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
最明确的解决方案可能是通过@
or强制执行列表上下文.list
,我会避免.flat
调用,因为它的语义内涵略有不同。
提醒一下,请注意列表赋值是复制,但如果您使用的方法之一只是从其标量容器中提取原始数组,您也可以使用绑定。但是,在这种情况下,您甚至不需要手动解容器为
dd my @ := $[<a b c>];
还可以将您的数组作为列表-y 恢复。
展平它:
my @a = $[<a b c>].flat;
dd @a; # Array @a = ["a", "b", "c"]