直到循环保持运行,即使短语为真?

时间:2014-05-20 19:52:09

标签: ruby loops

我有以下代码:

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循环不停止?

1 个答案:

答案 0 :(得分:1)

修复

(@world.exists?(decision) || decision == '')

否则 - @world.exists? decision || decision == ''被视为@world.exists?(decision || decision == ''),这不是正确的表达,你打算写。

由于decision是一个字符串对象,在Ruby中被视为 truth 值,decision || decision == ''(在您编写的代码中)也将被评估为true。此decision将作为方法参数始终传递给方法@world.exists?