Я новичок в Ruby и пытаюсь решить что-то, что меня смущает. При написании простого парсера я обнаружил, что сравнение символа с ==
даст другой результат, чем сравнение его с выражением 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
- это 1-байтовый файл, содержащий символ одинарной кавычки (0x22
), то получится:
Quote
ErrCase
true
true
"\""
Я предполагаю, что сделал что-то не так, но не могу понять, что это. Кто-нибудь может помочь?
Кстати, это в Ruby 1.9.2.