2011-05-15 193 views
0

我使用以下方法來檢查的答案,提出問題,即是否是真還是假:爲什麼比較Ruby中的字符串總是返回false?

when "new" 
    n = nums[rand(nums.length)] 
    puts "Question:" 
    puts qs[n].question 
    torf = gets.downcase.to_str.eql? qs[n].answer.downcase.to_str 
    puts torf 

但結果torf是即使正確答案放在始終爲false。我錯過了什麼?

+1

不好的問題。你有很多沒有解釋的變量/方法(nums,qs,question,answer)。你也沒有用'end'關閉'when'。 – sawa 2011-05-15 20:10:28

回答

4

gets將返回輸入的字符串加上換行符charcter,因此您需要將其刪除。因爲它是一個字符串,所以你不需要在結果上運行to_str。

torf = gets.downcase.chomp.eql? qs[n].answer.downcase.to_s 
+0

你也可以重寫'n = nums [rand(nums.length)]':'n = nums.sample' – 2011-05-15 12:04:52

+0

你應該使用'to_s',而不是'to_str'。 – Phrogz 2011-05-15 13:36:55

+0

加入@Phrogz的評論,這裏是一篇[to_s' vs'to_str']的文章(http://briancarper.net/blog/98/) – Zabba 2011-05-15 20:46:00

相關問題