「Kotlinの2種類の変数と型宣言の基本パターンについて」の記事では、主に「Hello, world!」をサンプルとして使いました。

その際、String 型の変数に「Hello, world!」の文字列を代入するだけでした。
今回はその String 変数を活用して、文字列に変数を埋め込む方法を紹介します。
一部の文字列を動的にする
「Hello, world!」固定では面白くないので、「world」の部分を好きな文字列に置き換えやすくしてみます。
name と msg の変数は中身を入れ替えたいので var で宣言しています。
ちょっと回りくどい書き方になっていますがご了承ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 | fun main(args: Array<String>) { var name: String = "world" var msg: String = "Hello, ${name}!" println(msg) name = "Taro" msg = "Hello, ${name}!" println(msg) name = "Hanako" msg = "Hello, ${name}!" println(msg) } |
結果は以下の通りです。
Hello, world!
Hello, Taro!
Hello, Hanako!
文字テンプレート
上記サンプルでは、急に「${name}」が登場したのでビックリしたかもしれませんが、この定義で name という変数を文字列の中に埋め込むことが可能となっています。
場合によっては {} をなくして $name と定義できるケースもありますが、前後の文字列の関係に依存するので {} で括っておきましょう。
シェルスクリプトを知っている方にはお馴染みの書き方ですね。
この方法を Kotlin では文字テンプレート(String Template)と呼ぶようです。
計算式も書ける文字テンプレート
実はこの文字テンプレート、{} の中には計算式のようなロジックを書くこともできます。
num という Int 型の変数を用意してインクリメントさせてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | fun main(args: Array<String>) { var name: String = "world" var num: Int = 1 var msg: String = "Hello, ${name}! ${num}人目のお客様です" println(msg) name = "Taro" msg = "Hello, ${name}! ${++num}人目のお客様です" println(msg) name = "Hanako" msg = "Hello, ${name}! ${++num}人目のお客様です" println(msg) } |
結果は下記の通りです。
Hello, world! 1人目のお客様です
Hello, Taro! 2人目のお客様です
Hello, Hanako! 3人目のお客様です
${num * 5} もできますし、${num * num2} のように num2 という変数が他に定義されていれば組み合わせることもできます。
あまり複雑なことを書くのはオススメしませんが、文字列の中に変数が埋め込めることは覚えておきたいですね。