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