簡體   English   中英

如何在推送時使用Perl默認數組變量@_?

[英]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; 推送到@_ ,但它不起作用。

我相信你在文檔中發現了一個錯誤。

@_popshift的默認值,但不適用於pushunshift 對於pushunshift ,必須明確指定數組。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM