为什么这不起作用?
puts "Hi"
x = "stop"
loop do
a = STDIN.gets
break if a.to_s.downcase.equal?x.to_s
end
puts "bye"
答案 0 :(得分:3)
因为gets
将包含在您键入内容的末尾使用的Enter键。
a = gets # I type in "stop"
a == "stop\n" #=> true
为了解决此问题,chop
关闭换行符
puts "Hi"
x = "stop"
loop do
a = STDIN.gets.chop
break if a.to_s.downcase == x.to_s
end
puts "bye"
答案 1 :(得分:1)
有两个原因。
第一个equal?
是一种非常强大的相等形式:默认情况下,它等同于比较对象ID,因此具有相同内容但不是同一个对象的两个字符串将不相等。您可能希望使用==
代替
其次gets
将包含您输入的换行符,您可以使用chop
或chomp