perl6中方法声明中的含义是什么?

时间:2013-04-11 11:30:11

标签: perl6

Perl6中方法声明中的加号意味着什么?

以下是spec

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

2 个答案:

答案 0 :(得分:8)

你的“spec”链接转到了一个历史文档,语法早已从Perl 6中消失了。我不知道它曾经做过什么,可能是“至少一个参数”,类似于{{1正则表达式中的量词。

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

答案 1 :(得分:8)

2019年更新请参阅 Variadic positionals destructuring部分; my answer to the SO question "variable number of arguments to function/subroutine"中的+@foo*@foo

大约一周前(2015年9月)拉里·沃尔推出了一个全新的+ parameter prefix,四个参数前缀之一(***+,{{1 }})表示slurpy (variadic) parameters。到目前为止,他已将此新前缀添加到Rakudo Perl 6编译器中,添加了一些测试,给出了a brief informal description of it on #perl6,并将a section on it添加到相关语言设计文档中。

原始问题中引用的例子取自十年前编写和冻结的非正式文件档案。那时|参数前缀表示a named parameter as contrasted with a positional one。现在我们使用+,因此:

: