首页 > 解决方案 > 输入没有输入作为有效的布尔值

问题描述

我正在编写一些非常简单的代码,要求对文本输入进行确认,而我想要做的是,如果用户只是按“Enter”,则将其视为“是”。例如:

define method
        puts "enter some text"
        @text= gets.chomp
        puts "you entered '#{@text}', is it correct?"
        correct = gets.chomp    
             if correct == 'y' || ''
             other_method
             else
             method
        end
end

但是当我在 Ruby 上运行它时,我得到“警告,文字字符串处于条件”,无论你输入什么,都会调用“other_method”。我找到的解决方案如下:

define method
        puts "enter some text"
        @text= gets.chomp
        puts "you entered '#{@text}', is it correct?"
        correct = gets.chomp    
             if correct == 'y'
             other_method
             elsif correct == ''
             other_method
             else
             method
        end
end

但这很烦人,我宁愿理解为什么第一个不起作用,以及如何使用 | 使它起作用 |

谢谢!

标签: ruby

解决方案


错误的意思是您自己在条件语句中提供了一个字符串(文字)。当你这样做时if correct == "y" || "",你实际上是在告诉它if correct == "y"OR""并且仅仅提供字符串本身不是一个条件。

要解决此问题,您只需在运算符之后和之前提供条件。Ruby 不假设您希望在||.

像这样:

define method
        puts "enter some text"
        @text= gets.chomp
        puts "you entered '#{@text}', is it correct?"
        correct = gets.chomp    
             if correct == 'y' || correct == ''
             other_method
             else
             method
        end
end

希望这可以帮助。快乐编码


推荐阅读