如何为Raku MAIN函数参数设置短参数与双长参数别名?
Raku MAIN函数单行参数别名实现方案
要实现单个参数变量+多别名/短选项的单行写法,正确的Raku语法是利用is alias(长别名)和is short(短选项)属性结合,示例如下:
sub MAIN(Bool :$opt-ALLDEBUG is alias<ALLDEBUG> is short<A> = False) { # 函数逻辑:可直接使用 $opt-ALLDEBUG 变量 say "Debug mode: $opt-ALLDEBUG"; }
语法说明
:$opt-ALLDEBUG:定义命名参数,内部变量名为$opt-ALLDEBUGis alias<ALLDEBUG>:添加长别名--ALLDEBUG,命令行调用时可通过--ALLDEBUG或--opt-ALLDEBUG触发该参数is short<A>:添加短选项-A,命令行调用时可通过-A快速触发= False:设置参数默认值为False
你尝试过的编译失败语法变体(翻译后)
以下是所有作为MAIN函数第一行测试但编译失败的写法:
Bool :A(:$opt-ALLDEBUG is alias<ALLDEBUG>) = False, Bool :A(:$opt-ALLDEBUG) = False, Bool (:$opt-ALLDEBUG is alias<ALLDEBUG>) = False, Bool :A(:$ALLDEBUG) = False, Bool :opt-ALLDEBUG(:-A :ALLDEBUG) = False, Bool :opt-ALLDEBUG(:-A :ALLDEBUG), Bool :opt-ALLDEBUG(-A :ALLDEBUG), Bool :opt-ALLDEBUG(:ALLDEBUG -A ), Bool :opt-ALLDEBUG(:ALLDEBUG -:A ), Bool :opt-ALLDEBUG(:ALLDEBUG -:A), Bool :opt-ALLDEBUG(:ALLDEBUG), Bool :opt-ALLDEBUG(:ALLDEBUG), Bool :$opt-ALLDEBUG(:ALLDEBUG), Bool :$opt-ALLDEBUG :ALLDEBUG, Bool :$opt-ALLDEBUG :$ALLDEBUG, Bool :$opt-ALLDEBUG :$ALLDEBUG = False, Bool :$opt-ALLDEBUG (:$ALLDEBUG :A) = False, Bool :$opt-ALLDEBUG (:$ALLDEBUG :-A) = False, Bool :A(:$opt-ALLDEBUG :$ALLDEBUG) = False, Bool :$opt-ALLDEBUG(:A, :$ALLDEBUG) = False, Bool :$opt-ALLDEBUG(:A :$ALLDEBUG) = False, Bool :A(:$opt-ALLDEBUG) (:$ALLDEBUG) = False, Bool :$opt-ALLDEBUG (:$ALLDEBUG) = False, Bool :$opt-ALLDEBUG (:$ALLDEBUG),
这些写法的核心问题在于混淆了Raku参数别名/短选项的语法规则:is alias和is short是参数的属性修饰符,需紧跟在参数变量后,而非将别名作为嵌套参数定义。
内容的提问来源于stack exchange,提问作者David Gordon
相关产品推荐
相关产品推荐

