gpt4 book ai didi

raku - 在 Perl 6 中将正则表达式作为参数传递

转载 作者:行者123 更新时间:2023-12-05 00:49:39 26 4
gpt4 key购买 nike

this question的延续,而且可能是一个更奇怪的。

我可以例如连接两个 regexes使用 sub ?
(当然,我明白,如何用 regex 来做)

下面的代码是完全错误的,但我希望它可以解释我想要做什么:

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

关于raku - 在 Perl 6 中将正则表达式作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47224387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com