【发布时间】:2016-12-22 19:44:54
【问题描述】:
在 Perl 6 Signature docs 中,有一个匿名 slurpy 参数的示例:
sub one-arg (@) { }
sub slurpy (*@) { }
one-arg (5, 6, 7); # ok, same as one-arg((5, 6, 7))
slurpy (5, 6, 7); # ok
slurpy 5, 6, 7 ; # ok
子程序中没有语句,主要是因为这周围的文字是关于满足签名的参数列表,而不是子程序对它的处理。
我正在使用它并尝试制作一个子例程,该子例程包含多个项目之一的列表(因此,不是零项目)。我并没有特别在意他们的名字。我想我仍然可以访问@_ 中的参数列表,即使有签名。但是,当您没有签名时,您会得到@_:
$ perl6
To exit type 'exit' or '^D'
> sub slurpy(*@) { say @_ }
===SORRY!=== Error while compiling:
Placeholder variable '@_' cannot override existing signature
------> sub⏏ slurpy(*@) { say @_ }
是否有另一种获取参数列表的方法,或者匿名参数是否会丢弃它们?我看到它们在类型约束部分中使用,但没有使用任何参数值的示例。我还能得到参数列表吗?
【问题讨论】: