perl6 – 在Rel 6中将正则表达式作为参数传递

前端之家收集整理的这篇文章主要介绍了perl6 – 在Rel 6中将正则表达式作为参数传递前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
延续 this question,可能更奇怪.

我可以吗使用sub连接两个正则表达式?
(当然,我明白了,如何使用正则表达式)

以下代码完全错误,但我希望它可以解释我想要做的事情:

my Regex sub s12 ( $c,$v) {
   return / <{$c}> <{$v}> /
}

my regex consonant { <[a .. z] -[aeIoU]>  }
my regex vowel { <[aeIoU]> }

my regex open_syllable { &s12( &consonant,&vowel ) }

"bac" ~~ m:g/ <open_syllable> /;
say $/; # should be 'ba'

解决方法

你写的内容基本上是正确的,但你需要稍微调整一下语法.首先,您应该像任何其他子声明您的组合功能.接下来,似乎将正则表达式插入另一个,< $r>是正确的语法,并将函数调用插入正则表达式,< {my-sub(args)}>是正确的语法. (当调用它时,不需要在sub前面添加一个&符号 – &主要用于当你想要在不调用它时引用Callable时.)结合这些小修复和你的代码工作:

sub combine(Regex $a,Regex $b --> Regex) {
    / <$a> <$b> /
}

my regex consonant { <[a .. z] -[aeIoU]>  }
my regex vowel { <[aeIoU]> }

my regex open_syllable { <{combine(&consonant,&vowel)}> }

"bac" ~~ m:g/ <open_syllable> /;
say ~$/; # output: ba

猜你在找的Perl相关文章