【发布时间】:2021-04-25 13:49:26
【问题描述】:
我想从用户那里查询一个玩家名字,如果超过了尝试次数 ==> 中止。 我提出了这个解决方案,但我认为还有另一种更简单/更智能的方法:
def queryplayername(displaymessage)
puts displaymessage
return gets.chomp.strip
end
def exitforspecificreason(reason)
puts "Exiting the game for #{reason}"
exit
end
player1name = queryplayername("Enter Player 1's name:")
timesleft = 3
while player1name.empty?
player1name = queryplayername("Player name can not be empty, please enter valid Player1 name, #{timesleft} times left:")
timesleft -= 1
exitforspecificreason('Exiting the game : exceeded number of tries!') if timesleft.zero? && player1name.empty?
end
是否有更好的解决方案来使用 (times/upto/until) 替换 while 循环?
感谢任何输入。
干杯!
【问题讨论】:
-
请注意,Ruby 的宗旨是简短、简洁但富有表现力。让方法名称如此复杂且冗长确实违背了规定。通常你会将它们包装在一个类中,这样你就可以执行
game.prompt_player_name或game.exit之类的操作。
标签: ruby methods while-loop