我总是@_[0]用来获取第一个参数并@_[1]用来获取第二个参数。但是当我在网上搜索代码片段时,我发现很多人都喜欢使用shift关键字。我发现shift关键字根本不直观。这两者之间有任何功能差异吗?
2189 次
2 回答
14
是的,两者之间是有区别的。
shift会改变@_
(你可能会说这将是一个会使 shift 变慢的操作)
$_[0]或者$_[1]只是赋值并且根本不会改变@_。
写这个的审美方式是:
sub this_is_better {
my ( $foo, $bar, $hey, $whoa, $doll, $bugs ) = @_;
}
于 2012-09-27T18:19:46.127 回答
0
如文档中所述,shift不使用显式数组只需从@_子例程中本地获取下一个参数,方法是从开头删除参数并将剩余元素移到前面。
于 2012-09-27T18:18:43.650 回答