我们来看看吧
say (map { say $_ }, 1..2).WHAT;
这告诉我们&map
返回a Seq
,这是一个惰性构造.
另外,for
循环体中的最后一个语句用于聚合其返回值,cf
my @list = do for 1..3 { map { say $_ }, 1..2; } say .WHAT for @list;
如果在调用之后添加另一个语句&map
,则调用将位于"sink context"中并急切地进行评估.
这也可以明确强制:
for 1..3 { sink map { say $_ }, 1..2; }
或者,只需使用另一个for
循环:
for 1..3 { .say for 1..2; }