爲什麼不能正常工作?Ruby關於循環和字符串相等
puts "Hi"
x = "stop"
loop do
a = STDIN.gets
break if a.to_s.downcase.equal?x.to_s
end
puts "bye"
爲什麼不能正常工作?Ruby關於循環和字符串相等
puts "Hi"
x = "stop"
loop do
a = STDIN.gets
break if a.to_s.downcase.equal?x.to_s
end
puts "bye"
有兩個原因。
第一個equal?
是一種非常強大的相等形式:默認情況下,它相當於比較對象id,因此兩個具有相同內容但不是相同對象的字符串將不相等。你可能想使用==
代替
其次gets
將包括您所鍵入您可以與chop
或chomp
刪除你不需要使用'to_s'爲'a.to_s'或'X換行符.to_s',因爲它們都是字符串,並且即使從鍵盤讀取時也會始終存在。 – 2012-07-10 18:53:28