[英]How can I use Perl default array variable @_ with push?
在perlvar文檔中有一個關於@_
的文本:
在子例程中,數組@_包含傳遞給該子例程的參數。 在子程序中,@ _是數組運算符push,pop,shift和unshift的默認數組。
使用不帶參數的shift
來從數組中獲取第一個元素是一種常見的方法。 它經常被用作:
sub some_method {
my $self = shift; # the same as `my $self = shift @_;`
...
}
但是在文檔中寫道它可以與push
一起使用,但是如果沒有明確指定@_
來推送我就無法創建工作示例。 從閱讀這篇文檔,我期待push 123;
推送到@_
,但它不起作用。
我相信你在文檔中發現了一個錯誤。
@_
是pop
和shift
的默認值,但不適用於push
和unshift
。 對於push
和unshift
,必須明確指定數組。
perldoc -f push
將語法顯示為:
push ARRAY,LIST
push EXPR,LIST
沒有選擇不指定數組; 同樣對於perldoc -f unshift
。
(OP提交了一個Perl錯誤報告;請參閱https://gist.github.com/bessarabov/2e938f4bbb79e78d1941 )
更新:
這已得到糾正。 在Perl的git repo中,它在提交256ca3d37ed232e10fbb2884be45691e745be7a9
中得到了糾正。 修復程序出現在版本5.23.1和5.24.0中。 在任何perldelta*.pod
文件中似乎都沒有提到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.