在Perl中,我一直很喜歡參數傳遞的鍵值對風格,子程序參數作爲鍵值對沒有臨時變量
fruit(apples => red);
我這個做了很多:
sub fruit {
my %args = @_;
$args{apples}
}
純粹爲了緊湊,不得不這樣做的方法不止一種,是有辦法之一:
訪問鍵值對而不將
@_
分配給散列?即在一個單一的聲明?有子程序的參數自動成爲哈希引用,可能通過一個子程序原型?
無:
分配到一個臨時變量
my %args = @_;
通過引用具有呼叫者通即
fruit({ apples => red });
純粹是爲了美學
試圖
${%{\@_}}{apples}
嘗試參照
@_
,解釋,作爲一個散列ref,將通過鍵訪問的值。但我得到一個錯誤,這不是一個散列引用。 (它是不是^。^)我想C,其中你可以投三分球,除其他事項外,避免明確再分配。
我也試過子程序原型
sub fruit (%) { ... }
...不過參數得到壓縮成
@_
如常。
'%'原型與'@'原型相同。 '%'對讀者有額外的影響。 – ikegami
如果將指向數組的指針轉換爲指向C中散列的指針,則在嘗試使用該指針時會發生段錯誤。 – ikegami