Я новичок в 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.