5

Perl6 方法声明中的 plus 是什么意思?

这是规范中的一个示例

submethod BUILD (+$tail, +@legs, *%extraargs) {
    $.tail = $tail;
    @:legs = @legs; 
}
4

2 回答 2

9

您的“规范”链接指向历史文档,并且语法早已从 Perl 6 中消失。我不确定它曾经做什么,也许是“至少一个参数”,类似于正则+表达式中的量词。

有关最新的规范,请阅读http://perlcabal.org/syn/S06.html,其中包含有关签名和子例程的所有信息。

于 2013-04-11T11:37:39.317 回答
9

2019 更新请参阅可变参数位置解构部分;+@foo*@foo在我SO 问题“函数/子程序的可变参数数量”的回答中


2015 年,Larry Wall 引入了+参数前缀,它是四个参数前缀 ( *, **, +, |) 之一,表示slurpy (variadic) 参数。他将它添加到 Rakudo 编译器中,添加了一些测试,在 irc 频道上对其进行了简短的非正式描述,并在相关语言设计文档中添加了一个部分。


原始问题中引用的示例取自十多年前及时编写并冻结的非正式文件的档案。那时,+参数前缀表示命名参数,与位置参数形成对比。现在我们使用:它,因此:

submethod BUILD (:$tail, :@legs, *%extraargs) {
    $.tail = $tail;
    @.legs = @legs;
}
于 2015-09-25T19:10:54.857 回答