我是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