我是Ruby的新手,想努力工作,这让我感到困惑。在写一个简单的解析器,我发现,具有==
比较炭会产生不同的结果比用case
表达比较:==和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。
c的类型是什么?那么“\”“是什么类型的?”c ===“\”“'工作吗? – 2011-04-05 10:45:13
字符串,字符串和是,按此顺序。 – Fuz 2011-04-05 11:08:18
我冒昧地让代码更加Rubyish(所有反斜杠都让我的眼睛流血:-))并添加一些调试。 – 2011-04-05 11:30:01