Perl 6 中的命名参数

Posted YoungForPerl6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl 6 中的命名参数相关的知识,希望对你有一定的参考价值。

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

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 


以上是关于Perl 6 中的命名参数的主要内容,如果未能解决你的问题,请参考以下文章

Perl 中带有输出参数的子例程的最佳实践命名约定

面向对象的 Perl 构造函数语法和命名参数

有没有办法关闭代码片段中的命名建议?

为啥 Perl CGI 模块使用连字符来开始命名参数?

Perl 6到底要不要改名?

如何有条件地将 C 代码片段编译到我的 Perl 模块?