2011-05-15 164 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

相关问题