クォートばかりだな

http://d.hatena.ne.jp/piyo2-moko/20080422#1208866102

font_table.each {|key, value|
  print '<font size="', value, '">', key, '</font><br>', "\n"
}

たしかに「"」と「'」ばかりでわかりにくいな。俺ならこんな風には書かないが、解説しておこう。まず、printに6つの引数をつけている。

・ '<font size="'
・ value
・ '">'
・ key
・ '</font><br>'
・ "\n"

で、

'<font size="'

<font size="

という内容の文字列を表現している。同様に

'">'

">

という内容の文字列を表現している。Rubyの文法にもHTMLにも「"」が出てくるからわかりにくいよね。Rubyの文字列は「"」でくるんでも「'」でくるんでも作成できるよ。「"」でくるんだ文字列の場合は次の「"」までが文字列の内容になるので、中にそのまま「'」が書ける。逆に「'」でくるんだ文字列の場合は次の「'」までが文字列の内容になるので、中にそのまま「"」が書ける。

"\n"というのは改行文字を表している。「\n」は「"」でくるまないとだめ。「'」でくるんだら「\」と「n」の2文字に解釈されてしまう。「"」でくるむことで「\n」を改行文字だと解釈してくれる。

で、俺なら

puts "<font size=\"#{value}\">#{key}</font><br>"

puts %Q!<font size="#{value}">#{key}</font><br>!

と書くね。「#{〜}」は式展開といって、中にRubyの式(変数や計算式やメソッド)を書くとその結果を埋め込んでくれる。だから「#{value}」は変数valueの結果を埋め込んでくれる。式展開を使うと短く簡潔に書ける。めちゃくちゃ重要だからしっかり覚えておいてね。式展開は「"」でくるんだ文字列でないと使えないよ。

で、「"」でくるんだ文字列の中に「"」そのものを入れるときは「\"」と書かないとだめ。「\」を前置することで次の「"」が文字列の終わりという意味をなくしている。だから文字列の続きが書ける。そして、「<br>」の次の「"」で文字列が終わる。

もひとつ。「%Q!〜!」という形式でも文字列を書くことができる。「"」でくるんだ文字列同じで式展開などが使える。「%Q!〜!」の何が嬉しいかというと、中に「"」を入れた場合「\"」と書かなくていいから読みやすくなる。

まだちょっと難しいかなぁ?