好的,我在windows x64上使用Ruby 2.26.问题是,我真的只是学习如何编写代码的新手,所以我不确定这是一个真正的错误,还是只是我的错误,因为这个错误非常简单,它有点愚蠢(?)@_ @
'while'和'until'运算符.
我所知道的,
action = gets.chomp until action == "a" || action == "b" puts "Answer a or b" action = gets.chomp end puts "The answer: " + action
和
action = gets.chomp while action != "a" || action != "b" puts "Answer a or b" action = gets.chomp end puts "The answer: " + action
应该导致同样的事情.但是在这里使用'while'运算符,即使我在powershell上的用户输入上加上"a"或"b",也会让我无限循环.谁能告诉我为什么会这样?或者这真的是一个错误吗?(这是一段时间的耻辱,直到操作员应该是一个非常基本的逻辑运算符吗?)
相反的
action == "a" || action == "b"
是
action != "a" && action != "b"
参见德摩根定律.
你的代码action != "a" || action != "b"
总是true
:
如果action
是"a"
,它是false || true
,是true
如果action
是"b"
,它是true || false
,是true
如果action
不是,那就是true || true
,是true
所以你的循环真的如此while true
.
注意:Ruby肯定存在缺陷,其中一些可能很简单.但这并不意味着你不理解的任何东西都是一个bug.;)
语言和布尔逻辑从句子中提取布尔逻辑并不总是那么容易:
"你喜欢猫与狗"
你想知道你是否喜欢animal
.为此,您需要检查animal
是狗还是猫.
如果你检查那animal
是一只狗和一只猫,你肯定不会喜欢这种动物!