Perl6可选函数标志

pis*_*hio 6 perl6

如何在Perl6中实现带有可选标志的函数?例如,假设我想调用我的函数:

format 'a b c';
Run Code Online (Sandbox Code Playgroud)

或者像这样:

format :pretty 'a b c';
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢

Chr*_*oph 11

它只是一个命名参数,如果标志是布尔值.这一切都有效,因为:pretty这对:pretty(True)对称的语法糖pretty => True.

您可以使用布尔值

sub format($arg, Bool :$pretty = False) {
    if $pretty { ... }
    else { ... }
}
Run Code Online (Sandbox Code Playgroud)

或使用其存在进行多次发送

multi format($arg) { ... }
multi format($arg, Bool :$pretty!) { ... }
Run Code Online (Sandbox Code Playgroud)

在第一个例子中,我们提供了一个默认值(这不是必需的,因为未定义的值是boolifies False,但它可以说是'在语义上做'正确的事情),在第二个例子中我们通过添加它来使它成为必需的参数.!.

另请注意,命名参数仍然必须用逗号分隔,即您将其用作

format :pretty, 'a b c';
Run Code Online (Sandbox Code Playgroud)