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

format 'a b c';

或像这样:
format :pretty 'a b c';

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

最佳答案

它只是一个命名参数,如果标记为 bool 值,则为实参。所有这些都可以解决,因为:pretty是一对:pretty(True) aka pretty => True的语法糖。

您可以使用 bool 值

sub format($arg, Bool :$pretty = False) {
    if $pretty { ... }
    else { ... }
}

或利用它的存在进行多次调度
multi format($arg) { ... }
multi format($arg, Bool :$pretty!) { ... }

在第一个示例中,我们提供了一个默认值(由于未定义的值会转化为False,因此实际上不是必需的,但是从语义上讲,这可以说是“正确的做法”),在第二个示例中,我们通过添加以下内容将其设置为必需参数!

还要注意,命名参数仍必须用逗号分隔,即,您可以将其用作
format :pretty, 'a b c';

关于raku - Perl6可选功能标志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38763157/

10-11 06:53