我正在尝试这段代码,但每次都得到 nil (这是 Black Jack 游戏的简单版本):是因为我在 case 语句中比较两个变量吗?
def end_game_message(player_score, bank_score)
message = ""
case player_score
when player_score == 21
message = "Black Jack!"
when player_score > bank_score
message = "You win!"
when player_score > 21
message = "You lose!"
when player_score < bank_score
message = "You lose"
when player_score == bank_score
message = "Push"
end
message
end
puts end_game_message(21, 15)
Run Code Online (Sandbox Code Playgroud)
预先感谢您的任何帮助!
小智 5
IMO,在这种情况下你应该使用if而不是case。但是,如果您想使用case,代码可能如下所示:
def end_game_message(player_score, bank_score)
case player_score
when 21
"Black Jack!"
when -> s { s > bank_score }
"You win!"
when -> s { s > 21 }
"You lose!"
when -> s { s < bank_score }
"You lose"
when -> s { s == bank_score }
"Push"
end
end
puts end_game_message(21, 15)
Run Code Online (Sandbox Code Playgroud)
关键点是给Proc从句赋予when宾语。在本例中,s是player_score(赋予case子句的值)。
(还有一个小的改进:case语句返回值,因此您不必将消息分配给局部变量)
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |