相关疑难解决方法(0)

在sink上下文中抛出的块的最后一个元素

这个计划

my @bitfields;
for ^3 -> $i {
    @bitfields[$i] = Bool.pick xx 3;
}

my @total = 0 xx 3;
for @bitfields -> @row {
    @total Z+= @row;
}
say @total;
Run Code Online (Sandbox Code Playgroud)

[0 0 0].如果我们在循环中添加一些东西,无论如何:

my @bitfields;
for ^3 -> $i {
    @bitfields[$i] = Bool.pick xx 3;
}

my @total = 0 xx 3;
for @bitfields -> @row {
    @total Z+= @row;
    say "foo";
}
say @total;
Run Code Online (Sandbox Code Playgroud)

它会正常工作.显然,块的最后一个元素被抛入sink上下文,在这种情况下意味着它被简单地忽略; 这个陷阱与此有关.但是,上面的代码看起来非常好; 还有这个

{@total Z+= @^þ} for @bitfields;
Run Code Online (Sandbox Code Playgroud)

显然是有效的,虽然我没有看到真正的区别.还有其他想法吗?

perl6

6
推荐指数
1
解决办法
78
查看次数

标签 统计

perl6 ×1