class – 在Perl 6中返回正则表达式的方法?
发布时间:2020-12-15 22:06:26 所属栏目:大数据 来源:网络整理
导读:我只是开始上课,所以我不了解基础知识. 我想要一个方法来使用对象的属性构造正则表达式: class TEST { has Str $.str; method reg { return rx/ [abc] * $!str !before foo /; } } my $var = TEST.new(str = 'baz');say $var.reg; 尝试运行此程序时,我收到
我只是开始上课,所以我不了解基础知识.
我想要一个方法来使用对象的属性构造正则表达式: class TEST { has Str $.str; method reg { return rx/ << <[abc]> * $!str <!before foo> /; } } my $var = TEST.new(str => 'baz'); say $var.reg; 尝试运行此程序时,我收到以下错误消息: ===SORRY!=== Error while compiling /home/evb/Desktop/p6/e.p6 Attribute $!str not available inside of a regex,since regexes are methods on Cursor. Consider storing the attribute in a lexical,and using that in the regex. at /home/evb/Desktop/p6/e.p6:11 ------> <!before foo>?<EOL> expecting any of: infix stopper 那么,这样做的正确方法是什么? 解决方法
看起来这样可行:
class TEST { has Str $.str; method reg { my $str = $.str; return regex { << <[abc]> * $str <!before foo> } } } my $var = TEST.new(str => 'baz'); say $var.reg; say "foo" ~~ $var.reg; say "<<abaz" ~~ $var.reg 你正在返回anonymous regex,它可以用作实际的正则表达式,就像它在最后两个句子中所做的那样. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |