7

我总是@_[0]用来获取第一个参数并@_[1]用来获取第二个参数。但是当我在网上搜索代码片段时,我发现很多人都喜欢使用shift关键字。我发现shift关键字根本不直观。这两者之间有任何功能差异吗?

4

2 回答 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 回答