【发布时间】:2020-11-16 18:03:47
【问题描述】:
我想知道 Raku 中有一种简洁的方法来处理嵌套数组(数组数组)和
使结果变平?转换平面数组时>>. 很方便,但是如果我想返回数组并且结果应该是平面的,那么 Raku 中可以使用什么构造?
grammar g {
rule port { <pnamelist> + %% ","}
token pnamelist { <id> + }
token id { \w }
}
class a {
method port ($/) { make $<pnamelist>>>.made }
method pnamelist ($/) { make $<id>>>.made }
method id ($/ ) { make $/.Str }
}
my $r = g.parse("ab,cd", :rule('port'), :actions(a) ).made;
say $r; # [[a b] [c d]]
上面的 sn-p 输出[[a b] [c d]],但我真正想要的是[a b c d]。有没有一种简洁的方法来重写make $<pnamelist>>>.made,以便它遍历数组$<pnamelist> 并将每个元素.made 收集到一个平面列表中,然后输入“make”?
【问题讨论】: