在 Raku 中,有没有办法为参数提供一个短命令行参数和两个长命令行参数替代方案?

问题描述 投票:0回答:1

我尝试了多种方法和语法变体,以在 MAIN 函数中的一行中实现此目的。 我知道我可以在两行中实现它,但我正在寻找更干净的解决方案,并且只让一个命名参数分配值,而另一个长命名参数参数只是一种别名形式。

以下是迄今为止失败的变体。 它们都经过一一测试,并作为 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),                   
parameters command-line-arguments program-entry-point raku rakudo-star
1个回答
0
投票

您可以嵌套别名,如下所示。请注意,就 raku 而言,带有

-
的短期权和带有
--
的长期权没有区别,并且它们可以互换使用

$ raku -e 'sub MAIN(Bool :A(:opt-ALLDEBUG(:$ALLDEBUG)) = False) { say $ALLDEBUG }'
False

$ raku -e 'sub MAIN(Bool :A(:opt-ALLDEBUG(:$ALLDEBUG)) = False) { say $ALLDEBUG }' -A
True

$ raku -e 'sub MAIN(Bool :A(:opt-ALLDEBUG(:$ALLDEBUG)) = False) { say $ALLDEBUG }' --opt-ALLDEBUG
True

$ raku -e 'sub MAIN(Bool :A(:opt-ALLDEBUG(:$ALLDEBUG)) = False) { say $ALLDEBUG }' --ALLDEBUG
True
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.