perl6需要帮助来了解有关proto正则表达式/令牌/规则的更多信息
发布时间:2020-12-16 06:27:44 所属栏目:大数据 来源:网络整理
导读:以下代码取自perl6网站教程,我试图在更多实验之前了解更多信息: proto token command {*} token command:symcreate { sym } token command:symretrieve { sym } token command:symupdate { sym } token command:symdelete { sym } 第一行中的*是一个什么明
以下代码取自perl6网站教程,我试图在更多实验之前了解更多信息:
proto token command {*} token command:sym<create> { <sym> } token command:sym<retrieve> { <sym> } token command:sym<update> { <sym> } token command:sym<delete> { <sym> } >第一行中的*是一个什么明星?它可以是别的东西,比如 proto token command { /give me an apple/ } >“sym”可以是其他东西,例如 command:eat<apple> { <eat> } ? 解决方法
{*}告诉运行时调用正确的候选者.
编译器允许您将其缩短为{*},而不是强迫您为只调用正确的一般情况编写{{*}}. 对于所有原型例程,例如sub,method,regex,token和rule,就是这种情况. 在正则表达式原型例程的情况下,只允许裸{*}. 所以这里是一个proto sub的例子,它做了一些对所有候选人都很常见的事情. #! /usr/bin/env perl6 use v6.c; for @*ARGS { $_ = '--stdin' when '-' } # find out the number of bytes proto sub MAIN (|) { try { # {*} calls the correct multi # then we get the number of elems from its result # and try to say it say {*}.elems # <------------- } # if {*} returns a Failure note the error message to $*ERR or note $!.message; } #| the number of bytes on the clipboard multi sub MAIN () { xclip } #| the number of bytes in a file multi sub MAIN ( Str $filename ){ $filename.IO.slurp(:!chomp,:bin) } #| the number of bytes from stdin multi sub MAIN ( Bool :stdin($)! ){ $*IN.slurp-rest(:bin) } sub xclip () { run( ?xclip -o?,:out ) .out.slurp-rest( :bin,:close ); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |