无论输入的颜色是什么,它都会返回"绿色" :(
sub next_traffic_lights {
my ($x) = @_;
if ($x == "red") {
return "green";
}
elsif ($x == "green") {
return "yellow";
} else {
return "red";
}
}
答案 0 :(得分:2)
在Perl中==
表示numerical equivalence其中eq
是字符串等效。您只需将==
翻转到eq
即可进行正确的比较。
"red"
和"green"
在数值上均等于零,因此使用数字比较将它们视为相同。
在编写这样的代码时,无论如何都应该转向查找表,因为这基本上是一个简单的状态机:
my %next_light = (
"red" => "green",
"yellow" => "red",
"green" => "yellow"
);
sub next_traffic_lights {
return $next_light{$_[0]};
}