Разница между == и case?

Я новичок в Ruby и пытаюсь придумать что-то, что меня сбивает. При написании простого синтаксического анализатора я обнаружил, что сравнение char с == даст другой результат, чем сравнение его с выражением case :

File.open('Quote.txt') do |f|
  f.chars.each do |c|
    puts c == '"' ? 'Quote' : 'Err'

    puts case c
    when '"' then 'QuoteCase'
    else          'ErrCase'
    end

    p c == '"', c === '"', c
  end
end

Предполагая Quote. txt - это однобайтовый файл, содержащий символ одинарной кавычки ( 0x22 ), это дает:

Quote
ErrCase
true
true
"\""

Я предполагаю, что сделал что-то не так, но я не могу понять, что это. Кто-нибудь может помочь?

Кстати, это есть в Ruby 1.9.2.

6
задан Jörg W Mittag 5 April 2011 в 11:28
поделиться