【Ruby】にて#{}のシャープと括弧とは何なのか?

2018年2月26日

Rubyでよくわからない記述の仕方が出てきたので調べておきました。そのメモです。

puts "#{fruit1}と{#fruit2}は果物です"

これの #はコメントアウトの#では無いようだ。
また{}が出てきているが、これの説明が無いように見える。。

自分の理解では文字列を表現するときは

“~~~~~”

とやる。これは他のプログラミング言語でも同じように思います。
だからこの”と”の中に入れたものはすべて文字列として扱われるのが慣例です。

例えばこんな文章。

“東京は日本の首都です”

で、これを変数を使ってやるとする。

syuto = ‘東京’

変数を使って文章をつくってみます。

syuto = '東京'
puts "syutoは日本の首都です"

とやりたいけど、”と”で囲った部分が文字列なので、syutoは、syutoで表示されちゃう。

結果は

syutoは日本の首都です

で、こんなときにrubyだとウルトラCの方法があって、それが前出の#{}のやりかた。

puts "#{syuto}は日本の首都です"

こうすると、なんと”と”で囲まれた文字列の中に変数を入れることができちゃう!

結果は

東京は日本の首都です

と出てくれる。

つまり

syuto + “は日本の首都です”

と同じことができるってわけ。このやり方は式展開というそうで、読みやすいので#{}を使った方が好まれるやり方なんだそう。

#{}でワンセットとして使うのがポイント。

これをRubyで書いて実行してみれば意味がわかるはず。

aiueo = '東京'
puts "aiueoは日本の首都です"
puts "#{aiueo}は日本の首都です"

このように書くと、

結果は

aiueoは日本の首都です
東京は日本の首都です

もう1つの例を書いてみます。

fruit1 = "リンゴ"
fruit2 = "バナナ"
puts "fruit1とfruit2は果物です"
puts "#{fruit1}と#{fruit2}は果物です"

こうすると、
結果は

fruit1とfruit2は果物です
リンゴとバナナは果物です