我讀了關于改變*原型的Perl檔案
對*原型的改變
子程式原型中的*字符曾經允許裸詞優先于大多數(但不是所有)子程式名稱。這從來都不是一致的,而且表現出了錯誤的行為。
現在它已經被改變了。 現在它已經被改變了,所以子程式總是優先于裸詞,這使它與類似的內置函式的原型相一致。
代碼示例:
sub splat(*){ ... }
sub foo{ ... }
splat(foo); # now always splat(foo())/span>
splat(bar); # 仍然像以前一樣splat('bar')。
close(foo); # close(foo())
close(bar); # close('bar')
誰能向我解釋一下其中的區別?感謝任何幫助。
uj5u.com熱心網友回復:
perldelta 條目說明的是,當 foo() 是一個預定義的函式時,在 5.22 之前,呼叫 splat(foo) 可能被決議器解釋為 splat(foo()) 或 splat('foo'),但你不容易區分哪個。現在,它將始終被視為 splat(foo())。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328594.html
標籤:
上一篇:為什么這個匯編程式不接受輸入?
