有时我会开始在 Perl 6 REPL 中编写一系列方法调用,例如:
".".IO.dir.grep(...).map(...).
...然后我意识到我想要对最终列表做的是将每个元素打印在自己的行上。我希望序列有类似
each
方法,所以我可以用 .each(*.say)
结束链,但是我找不到这样的方法。相反,我必须返回到行首并添加 .say for
.感觉就像它打破了我的思绪。这是一个小烦恼,但它让我感到如此明显的遗漏,以至于我想知道我是否错过了一些简单的替代方案。我能想到的只有
».say
和 .join("\n").say
,但前者可以无序地对元素进行操作(如果我理解正确的话),后者构造一个可能有问题的单个字符串,具体取决于输入列表。
最佳答案
你可以自己滚动。
use MONKEY;
augment class Any
{
method each( &block )
{
for self -> $value {
&block( $value );
}
}
};
List.^compose;
Seq.^compose;
(1, 2).each({ .say });
(2, 3).map(* + 1).each({ .say });
# 1
# 2
# 3
# 4
如果您喜欢这个,那么您的第一个 CPAN 模块机会就在那里。
关于raku - 为什么 Perl6 序列上没有 "each"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207313/