【发布时间】:2013-04-11 11:30:10
【问题描述】:
在 Perl6 的方法声明中加号是什么意思?
这是来自spec的示例
submethod BUILD (+$tail, +@legs, *%extraargs) {
$.tail = $tail;
@:legs = @legs;
}
【问题讨论】:
标签: raku
在 Perl6 的方法声明中加号是什么意思?
这是来自spec的示例
submethod BUILD (+$tail, +@legs, *%extraargs) {
$.tail = $tail;
@:legs = @legs;
}
【问题讨论】:
标签: raku
2019 年更新参见可变位置解构部分; +@foo 和 *@foo 在my answer to the SO question "variable number of arguments to function/subroutine"。
2015 年,Larry Wall 引入了 + parameter prefix,它是表示 slurpy (variadic) parameters 的四个参数前缀(*、**、+、|)之一。他将其添加到 Rakudo 编译器中,添加了一些测试,给了a brief informal description of it on the irc channel,并在相关的语言设计文档中添加了a section on it。
原始问题中引用的示例取自十多年前及时编写并冻结的非正式文档的存档。当时+ 参数前缀表示a named parameter as contrasted with a positional one。现在我们为此使用:,因此:
submethod BUILD (:$tail, :@legs, *%extraargs) {
$.tail = $tail;
@.legs = @legs;
}
【讨论】:
您的“规范”链接指向历史文档,并且语法早已从 Perl 6 消失。我不确定它曾经做什么,可能是“至少一个参数”,类似于 +正则表达式中的量词。
有关最新规范,请阅读http://perlcabal.org/syn/S06.html,其中包含有关签名和子例程的所有信息。
【讨论】: