プログラミングの中で多くの場面で利用されている変数ですが、変数の中に格納されている値をどのようにして画面に表示させていますでしょうか
ほとんどの場合は変数だけで表示させたり、何かしらの文字列と結合させて表示させたりといったところだと思います。
今回の記事では主に後者の表示方法である『文字列と結合させて画面に表示させる方法』にスポットを当てて解説していきたいと思います。
変数を文字列と結合させて表示する
変数を文字列と結合させて表示させる方法は主に2種類あります。
方法① + 記号を使用した文字列結合
書式
変数名 + "文字列"
"文字列" + 変数名
"文字列" + 変数名 + "文字列"
演算などでも利用される+記号は文字列の結合時にも利用することができます。
結合方法は上記のように文字列と変数の間に+記号を付ければいくらでもつなぎ合わすことができます。
前後関係に制約などはありません。
例文を元に実際にどのように結合されて出力されるのか見てみましょう
例文
dogs = "10" puts "犬が" + dogs + "匹通り過ぎていきました。" #出力結果 #犬が10匹通り過ぎていきました。
上記の例では、変数dogsを宣言して文字列”10″を代入しています。
変数dogsを二つの文字列の間に配置してそれぞれの文字列と結合させるために前後に+記号を用いています。
出力結果を確認してもらうと、正常に文字列が結合されて自然な文章となっていることがわかりますね。
このように文字列と変数の結合は+記号を使用するだけで簡単に実装することができます。
方法② #{} を使用した文字列結合(式展開)
書式
" #{変数名} 文字列 "
" 文字列 #{変数名} "
" 文字列 #{変数名} 文字列 "
初心者の方には少し難しいかもしれませんが#{}の中に変数を記述して文字列と記号全てを(“”)ダブルクォーテーションで囲った記述方法です。
こちらは式展開(変数展開と呼んでいる人もいます)と呼ばれる記述方法で、前述の+記号を利用した記述方法よりも推奨されている書き方になります。
例文
cats = "5"
puts "猫が#{cats}匹物陰からこちらを覗いています"
#出力結果
#猫が5匹物陰からこちらを覗いています
上記の例では、変数catsを宣言して文字列”5″を代入しています。
変数catsを#{}の中に記述して文字列の中に配置しています。
そして文字列全体をダブルクォーテーションで囲うことで文字列を結合させることができるようになり
出力結果を確認してもらうと、正常に文字列が結合されてこちらの記述方法でも自然な文章となっていることがわかりますね。
このように文字列と変数の結合は+記号を使用するだけではなく#{}を利用した方法でも実装することができます。
慣れてくるとこちらの方が記述はしやすく、文字列の中で複数の変数を展開したい場合にはこちらの方が記述スピードは速くなります。
式展開(変数展開)と+の文字列結合の違い
一見すると同じ挙動をしているように見える二つの文字列結合の方法ですが、
実は、+記号を用いた文字列結合と式展開を用いた文字列結合には挙動に違いがあります。
基本的には文字列を結合する際には、前述した通り式展開を利用することをお勧めしています。
その理由についてご紹介していきます。
式展開では自動で型変換が行われる(整数⇒文字列)
通常、データ型の異なるもの同士の結合には型変換(to_s,to_i)を行う必要があり、型変換を行わずに文字列の結合を行おうとするとエラーが出力されてしまいます。
ところが、式展開では自動で整数から文字列への型変換(to_s)が行われています。
そのため、不要なエラーの発生を抑えることができ、また、コードの記述する手間を省くこともできます。
型変換の方法については下記の記事をご覧ください。
【Ruby】文字列や数値のデータ型を変換する方法~ to_s to_i ~

変数の値がnil(null)の場合に空文字を出力する
文字列結合を行う際に+記号で結合を行うと、もし変数の値がなにも格納されていない場合にはエラーが出力されてしまいます。
コチラについても式展開を利用していればエラーを防ぐことができ、変数の値が空だった場合には” “(空文字)が出力されます。
エラーが出るだけでピリついてしまう神経質な方には特におすすめな記述方法です。
まとめ
今回は変数を文字列の中で表示させる二つの方法についてご紹介していきました。
基本的には式展開(変数展開)を利用していただければ、不要なエラーを未然に防ぐことができるだけではなく、簡潔に記述することができるようになります
プロジェクトごとにルールがあるため、必ずしも式展開で書く必要はありませんが、初心者の方が個人で学習する際にはできる限り利用するようにして慣れておくと良いかもしれません。

