我剖析了一些代碼,有一個函式很突出,我想知道是否有辦法優化它:
該函式被定義為:
sub convert_arrayref {
if(ref($_[0] ) eq 'ARRAY') {
return join(($_[1] || ","), @{$_[0]}) 。
}
else {
return $_[0] 。
}
}
大多數情況下,else塊會被執行,我想知道我是否可以行內它而不是進行函式呼叫。呼叫的代碼看起來如下:
$data = convert_arrayref($data, '& ')
因此,我所做的是將呼叫代碼改為:
if ($data eq 'ARRAY'/span>) {
$data = join('& ', $data)
}
我以為這將是等同的。然而,結果是不同的。我在想,我是否在這里做錯了什么。
uj5u.com熱心網友回復:
你得到不同的結果是因為你沒有復制if子的功能。 你需要使用ref來檢查你的變數是否是一個陣列參考,并且你需要deference這個變數:
if (ref($data) eq 'ARRAY'/span>) {
$data = join('& ', @{ $data })
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311312.html
標籤:
