はじめに
昨日書いた記事でもしれっと使ってるんですが、固定の文字列+連番みたいなことをやるときに、普通に文字列連結してもいいのですが見づらいし直感的ではないので、テンプレートリテラル(テンプレート構文)というものを使って、文字列に直接変数をぶっこんでしまう、というやり方を日常的にやるんじゃないかと思います。
昨日書いた記事はこちら
というわけで、昨日書いた記事の順番で各言語のテンプレートリテラルを紹介していきたいと思います。
※追記
後から知りましたが、大概の言語で日本語の呼び方はブレるけど英語では String interpolation
と呼ばれている機能なんだそうですね。
Ruby
v = "hoge"
print "hoge#{v}" # hogehoge
ダブルクォートで囲われている中の #{v}
のところですね。変数名を #{変数名}
ってな感じで囲むやり方です。
割と古く(v1系)からのrubyでは当たり前のように使われているもののようです。
正確には「式展開(string interpolation)」と呼ばれるものらしく、変数どころかruby式を入れることができるそうです。
だから、こんな感じのこともできるってわけですね。
v = "hoge"
w = "fuga"
print "hoge#{v+w}" # hogehogefuga
Python
バージョンによって書き方が違うようです。文字列リテラルはシングルクォート、ダブルクォートどっちでも動作するみたいです。
v = "hoge"
# 古いpython(%構文)
print("hoge%s" % v) # hogehoge
# python3以降(formatメソッド)
print("hoge".format(v)) #hogehoge
# python3.6以降(f文字列)
print(f"hoge{v}") #hogehoge
f文字列いいですね、かっこいいっす。python3.8以降なら式も入れれるようです。
読みやすい記事はこちら
PHP
これも古くからある機能で、比較的に日常的に行われているせいか特別な名前はついていません。例によって文字列リテラルがダブルクォートの場合のみです。
$v = "hoge";
// 以下どれでも動作します
echo "hoge$v"; //hogehoge (見づらいので推奨しない)
echo "hoge${v}"; //hogehoge (ちょっと見やすいけど、あまり見ない。@tadsanのコメントによるとPHP8.2からDeprecatedになるそうなのでやめようぜ)
echo "hoge{$v}"; //hogehoge (一番良く見る。実は式展開もできる)
書き方複数ありますが、 {$変数or式}
の書き方が一般的な気がします。式展開できるのはこの書き方のみです。下記のJSと違って$
が{}
の内側に入り込んでるのがポイントですね。
@tadsan さんにコメントで教えていただきましたが ${変数}
の書き方はPHP8.2で非推奨(PHP9で廃止)になりそうなのだそうです。
使うのはやめましょう。
JavaScript
そもそもテンプレートリテラルはJavaScriptでの呼び方です。ES6以降で使用できます。式展開もできるらしいです(あんまやったことない)。
`変数`
のようにダブルクォートの代わりにバッククォート(バックティック)で囲んだところの中に ${変数or式}
とします。
const v = "hoge"
console.log(`hoge${v}`); // hogehoge
(おまけ)C#
@ktz_alias さんにコメントで教えていただきました。
var v = "hoge";
System.Console.WriteLine($"hoge{v}");
文字列リテラルを$"..."とし、その中の{}に計算式を置くスタイル。
また、{}の中のダブルクォーテーションはエスケープ不要。
C#界隈では、テンプレートリテラルとは呼ばず、文字列補完(String interpolation)と呼ぶ模様。
ほえええ、そうなんですね!
おわりに
いかがでしたでしょうか。
言語によって各々やり方がちょっとずつ違うわけですが、どれもだいたい同じことができる、というのが大事なポイントです。
皆さんも色々試してはいかがでしょうか。