实际上在Raku中再现数组的元素

Lar*_*een 6 raku

如何将数组的每个元素重现x次?

例如for my @a=<blu red>;x = 5,结果应该像

(blu blu blu blu blu red red red red red)

我想出了这个

say flat map { ($_, $_, $_, $_, $_) }, @a;
Run Code Online (Sandbox Code Playgroud)

但是当然对于x的任意值,这是不实际的。

实际上如何做?谢谢。

Håk*_*and 5

尝试像这样使用infix xx运算符:

my @a=<blu red>;
my $x = 5;
my @b = @a.map({ $_ xx $x }).flat;
say @b;
Run Code Online (Sandbox Code Playgroud)

输出

[blu blu blu blu blu red red red red red]
Run Code Online (Sandbox Code Playgroud)

编辑

..或简单地使用flatmap(尽管flatmap不鼓励使用文档)

my @b = @a.flatmap({ $_ xx $x });
Run Code Online (Sandbox Code Playgroud)

  • 就个人而言,我更喜欢使用Slip(`|`):`my @ a = &lt;蓝红色&gt;; 我的$ x = 5; 我的@b = @ a.map:{slip $ _ xx $ x}; 说@b;` (5认同)
  • @LarsMalmsteen,它会执行得更好,因为“map”已经检查了“map”中的块返回的“Slip”,并直接处理它们。而不是让“平面”进行后处理。 (2认同)