raku - 你能循环一个变量中的 Perl 6 block 吗?

标签 raku control-structure

我一直想做这样的事情:

my $block := {
    state $n = 0;
    say $n++;
    last if $n > 3;
    };

loop $block;

甚至:
$block.loop;

我没想到这是可能的,但如果是的话肯定会很酷。

我如何找出特定例程的来源?
$ perl6
To exit type 'exit' or '^D'
> &loop.^name
===SORRY!=== Error while compiling:
Undeclared routine:
    loop used at line 1

最佳答案

制作 $block.loop工作,相当容易,可以住在模块土地上:

use MONKEY;
augment class Block {
    method loop($self:) {
        Nil while $self()
    }
}
my $a = { print "a" };
$a.loop  # aaaaaaaaaaaaaaaaaaa (with apologies to Knorkator)

制作 loop $block工作将更加复杂,因为这将涉及对 Perl 6 语法的操作处理的更改。

关于raku - 你能循环一个变量中的 Perl 6 block 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45317029/

相关文章:

python - Perl 6 的 comb 方法在 Python 中的等价物是什么?

raku - 如何在 Perl 6 中否定/减去正则表达式(不仅是字符类)?

c++ - 控制结构让我失望

java - 三元运算符(Java)

python - python是否有更好的控制结构或其他功能来简化代码?

raku - 逗号 IDE 中的 "SDK is not set"

raku - 无法使用线程通过 DBIish 将数据插入到 PostgreSQL。出了什么问题?

java - 如何计算堆内存将容纳的对象数?

documentation - Perl 6 程序是否必须编译才能读取嵌入式文档?