如何按原始顺序从超级运算符中获取元素?

Chr*_*oms 3 raku

我想将字符串拆分为单词并将每个单词打印在单独的行上,因此我尝试了以下操作:

"foo bar baz".words>>.say
Run Code Online (Sandbox Code Playgroud)

然而,结果并不顺利:

baz
foo
bar
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

dar*_*rch 5

Hyperoperators 实际上确实按顺序返回结果。你的代码的问题是 hyperops 不是循环结构;他们是列表运算符。因此,无法保证它们的执行顺序,并且使用它们的代码好像是不正确的。如果您关心执行顺序,您应该使用这样的结构for来保证它。

例如,这

my @a = "foo bar baz".words>>.split("a");
Run Code Online (Sandbox Code Playgroud)

导致@a包含在您所期望的顺序的元件,无论在哪个计算每个元素的顺序的:

foo b r b z
Run Code Online (Sandbox Code Playgroud)