为什么这不起作用?
puts "Hi"
x = "stop"
loop do
a = STDIN.gets
break if a.to_s.downcase.equal?x.to_s
end
puts "bye"
为什么这不起作用?
puts "Hi"
x = "stop"
loop do
a = STDIN.gets
break if a.to_s.downcase.equal?x.to_s
end
puts "bye"
因为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"
有两个原因。
首先equal?
是一种非常强的相等形式:默认情况下,它等同于比较对象 id,因此具有相同内容但不是同一个对象的两个字符串将不相等。您可能想==
改用
其次gets
将包括您输入的换行符,您可以使用chop
或删除该换行符chomp