Javaプログラマーが使うと揶揄されなくなる「Kotlin」の基本構文: Android Studioで始めるKotlin入門(2)(3/3 ページ)
Android Studio 3.0を使い、最近話題のプログラミング言語「Kotlin」の特徴を解説する連載。今回は、変数定義、パッケージ定義とimport、関数、制御文、文字列周りの便利機能などについて。
文字列周りの便利機能
最後に、「文字列テンプレート」「複数行文字列リテラル」、そして「trimMargin」メソッドなど文字列周りの便利機能を紹介します。いずれも小粒ですが使うと便利さが伝わってくる機能です。
文字列テンプレート
アプリケーションのメッセージなどで、文字列の中に変数の値を埋め込むコードを書く場面はよくあることでしょう。JavaであればString.formatメソッドなどを使ったり、あるいはチマチマと+演算子を使って文字列をひたすら結合したりしていく必要があります。
Kotlinには文字列テンプレートと呼ばれる機能があり、リスト14のように文字列リテラルに変数を直接埋め込めます。「$変数名」で変数の値をそのまま埋め込めますが、変数名をスペースなどで明示的に区切れない場合は「${変数名}」のように{}を使って変数名を指定します。また、{}の中でプロパティや配列の値などを参照して文字列に埋め込むこともできます。
val ar1: Array<String> = arrayOf("abc", "def", "ghi") val name = "田中" val age = 32; println("Name: $name, Age: $age") //「$変数名」で文字列に埋め込める //どこまでが変数名か分からないケースは{}で囲む println("${name}さんの年齢は${age}歳です") //変数だけでなく、プロパティや配列の値も表示可能。その場合は必ず{}で囲む println("配列の長さ: ${ar1.size}, 配列の値: ${ar1[2]}")
C#プログラマーであれば、C# 6.0で導入された文字列補間とほぼ同じ機能と考えれば理解しやすいですね。アプリ開発などで多用するであろう、Kotlinの大変有用な機能です。
複数行文字列リテラル
文字列リテラルが複数行にわたる場合、Javaを含む幾つかの言語では、リスト15のように、改行文字を含めて文字列を連結するようなコードを書く必要があります。
String sql = "SELECT * \n" + "FROM MyTable \n" + "WHERE cond > 1\n";
こうしたコードは書くのが面倒なため、幾つかの言語では「ヒアドキュメント」と呼ばれる「特定の文字列を使って文字列リテラルを開始し、次に同じ文字列が出てくるまで、複数行にわたる文字列リテラルを作る」機能が搭載されています。Kotlinではリスト16のように「"""」(ダブルクオート3個)で文字列リテラルを開始し、次に「"""」が出てくるところまでまとめて、複数行文字列リテラルとして扱えます。
val sql = """ SELECT * FROM MyTable WHERE cond > 1 """ println(sql)
SELECT * FROM MyTable WHERE cond > 1
文字列の各行にある最初の空白文字列を「|」まで削除する「trimMargin」メソッド
なお、コーディングルールに従ってインデントする場合、複数行リテラルの各行の先頭に無駄なスペースが付くのが気になるかもしれません。Kotlinの文字列クラスにはデフォルトで、「trimMargin」という、文字列の各行にある最初の空白文字列を「|」まで削除するメソッドがあります。これは言葉で説明するよりもリスト17、18を見た方が早いでしょう。
val sql2 = """ |SELECT * |FROM MyTable |WHERE cond > 1 """.trimMargin()
SELECT * FROM MyTable WHERE cond > 1
val sql3 = """ #SELECT * # FROM MyTable # WHERE cond > 1 """.trimMargin("#")
SELECT * FROM MyTable WHERE cond > 1
このように、複数行文字列リテラルはコードの書きやすさ、見やすさに確実に貢献してくれる、小粒ながら有用な機能です。ぜひ活用しましょう。
次回は、nullとの戦いに終止符を打つ
今回はデータ型や変数定義、制御構文などの基本的な機能について解説しました。次回はKotlinの「null安全」の仕組みについて解説します。多くのプログラマーが長年にわたって苦しみ続けてきたnullとの戦いに終止符を打つ(!?)とても魅力的な機能です。ご期待ください。
今回のサンプルコード
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Kotlin(プログラミング言語)
Kotlin(コトリン)は「実用的」であることを主眼においたプログラミング言語だ。その特徴は簡潔/安全/汎用/(Javaとの)相互運用性にある。 - JVMとAndroid用のオープンソースプログラミング言語「Kotlin 1.0」がリリース
JetBrainsが主導して開発を進めるJVMとAndroid用のオープンソースプログラミング言語の正式版がリリース。既存のコードやインフラとの相互運用性を重視した実用的なプログラミング言語だという。 - 2017年プログラミング言語別平均年収ランキング、1位は「Scala」 平均626万円
ビズリーチは、「プログラミング言語別 平均年収ランキング2017」を発表した。第1位はScalaで平均年収は626万円、第2位はPythonで601万円、第3位はKotlinで577万円だった。SwiftやRuby、Javaなどもランクインした。