Perl6中方法声明中的加号意味着什么?
以下是spec
的示例submethod BUILD (+$tail, +@legs, *%extraargs) {
$.tail = $tail;
@:legs = @legs;
}
答案 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。现在我们使用+
,因此:
: