我尝试了多种方法和语法变体,以在 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),
您可以嵌套别名,如下所示。请注意,就 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