Raku Perl 6中嵌套正则表达式的作用域

Raku Perl 6中嵌套正则表达式的作用域,raku,Raku,可以按任意顺序定义嵌套的正则表达式吗 以下程序按预期工作: 我的正则表达式字母{} 我的正则词{+} 我的$string='abab'; $string~~&word; 投入$/;#阿巴布 如果交换前两行,编译器将产生错误 是否有方法覆盖此限制(无需使用语法)您可以将正则表达式放入预先声明但稍后设置的变量中: my $letter; my regex word { <$letter> + } $letter = regex { <[a b]> } my $string

可以按任意顺序定义嵌套的
正则表达式吗

以下程序按预期工作:

我的正则表达式字母{}
我的正则词{+}
我的$string='abab';
$string~~&word;
投入$/;#阿巴布
如果交换前两行,编译器将产生错误


是否有方法覆盖此限制(无需使用
语法)

您可以将正则表达式放入预先声明但稍后设置的变量中:

my $letter;
my regex word { <$letter> + }
$letter = regex { <[a b]> }

my $string = 'abab';
$string ~~ &word;
put $/; # abab
我的$letter;
我的正则词{+}
$letter=regex{}
我的$string='abab';
$string~~&word;
投入$/;#阿巴布

谢谢!如果我理解正确,
$letter
将在我每次使用
word
时插入,因此在某些情况下这可能会影响性能?请相信,如果将其绑定到
可调用的
变量,它可以提高性能(和可读性):
my&letter;我的正则词{+}&字母=正则表达式{}。使用符号并将其绑定到一个
可调用的
,只有在我们使用它时才会进行计算(惰性计算)。@callyalater谢谢。但是,如果与
&字母匹配是一个频繁的操作,那么它是否只会在程序调用它时计算一次或每次?您可以自己回答这个问题,在代码中输入
说“regex”
,然后查看您在屏幕上看到的次数是否符合您的期望。