0
我所遇到以下遺留代碼:多餘//使用的,或有必要
sub some_func {
my $val = $ENV{some_key} // '';
if (length($val)) {
return $val;
}
return 0;
}
通常我會解僱這是令人費解和改寫:
sub some_func {
return $ENV{some_key} || 0;
}
但是誰寫的程序員這很不錯。我錯過了什麼嗎?
afaict兩者之間的唯一區別是當環境變量爲'0'時是否返回'0'或0。 – ysth 2014-10-08 15:00:19
在原始代碼中它確實是一個'//',或者它應該是'||'。後者更有意義。但是,既然你在看ENV變量,我認爲空字符串會比0更好,所以像'return $ ENV {some_key} || 「」;'可能會更好。 – jimtut 2014-10-08 17:02:36
@jimtut,'// //非常有意義。它使Perls早於5.12的undef警告「長度」保持沉默。這是執行'我的$ val = $ ENV {some_key};的另一種方式; if(defined($ val)&& length($ val))'。 (在第一個代碼片段中使用'||'只有在它有效地等同於第一個片段中的'//'時纔有意義。) – ikegami 2014-10-08 19:12:29