Raku 中的命名参数

Raku 中的函数(和类方法)能够接受命名参数。最简单的方法是用箭头分隔名称和值:

sub f(:$a, :$b) {
    $a ** $b
}

say f(a => 2, b => 3); # 8

但另一种语法是可能的,在冒号的帮助下。有几个主要品种。

:key(value)

所有内容都以冒号开头,数值在括号内:

say f(:a(2), :b(3));

例如,不用圆括号,尖角括号也是允许的:

say f(:a<2>, :b<3>);

:Nkey

对于整数值,仍然有这样一个奇怪的语法:

say f(:2a, :3b);

:key 和 :!key

如果命名参数用作标记,则不需要指定值。在这种情况下,您可以传递 True 和 False,如下所示:

sub g(:$key) {
    $key
}

say g(:key);  # True
say g(:!key); # False

实际上,所有冒号对儿都会创建键值对,因此您可以在创建散列时执行相同的操作

my %data = :alpha(10), :beta(20), :gamma(30);
say %data<beta>; # 20
Raku 

comments powered by Disqus