任何顏色的輸入返回「綠色」 :(爲什麼這個if/else總是正確的?
sub next_traffic_lights {
my ($x) = @_;
if ($x == "red") {
return "green";
}
elsif ($x == "green") {
return "yellow";
} else {
return "red";
}
}
任何顏色的輸入返回「綠色」 :(爲什麼這個if/else總是正確的?
sub next_traffic_lights {
my ($x) = @_;
if ($x == "red") {
return "green";
}
elsif ($x == "green") {
return "yellow";
} else {
return "red";
}
}
在Perl ==
意味着numerical equivalence其中eq
是字符串等價。你只需要翻轉這些==
到eq
做正確的比較。
兩個"red"
和"green"
等於數值爲零,所以他們使用數值比較考慮這裏是相同的。
在編寫這樣的代碼時,無論如何你都應該轉向查找表,因爲這基本上是一個簡單的狀態機:
my %next_light = (
"red" => "green",
"yellow" => "red",
"green" => "yellow"
);
sub next_traffic_lights {
return $next_light{$_[0]};
}
如果你已經使用'use strict;使用警告;',Perl會告訴你。 – melpomene