我有以下代码:
until (@world.exists? decision || decision == '')
UiHandler.print_error(UiHandler::NO_TILE)
UiHandler.print_turn_message
decision = gets.chomp
end
应允许玩家通过输入空行来跳过转弯。但由于某种原因,即使条件为真,until循环也会继续运行
即。传入' 1 1'确实起作用并停止循环,因为它存在于世界中,但没有传递任何东西,即使put(@ world.exists?decision || decision =='')给出&#39真'
即使满足条件,什么会导致until循环不停止?
答案 0 :(得分:1)
修复
(@world.exists?(decision) || decision == '')
否则 - @world.exists? decision || decision == ''
被视为@world.exists?(decision || decision == '')
,这不是正确的表达,你打算写。
由于decision
是一个字符串对象,在Ruby中被视为 truth 值,decision || decision == ''
(在您编写的代码中)也将被评估为true
。此decision
将作为方法参数始终传递给方法@world.exists?
。