如何在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)