Kotlin今日の発見
Kotlinは、javaの上にかぶせて動かすもの。
したがって、Kotlinの構文がよくわからない時は、
Javaの構文でほとんど書けてしまう。
しかし、それに甘んじてしまうと、せっかくのKotlinを活かしきることが出来ない。
たまには、マニュアルに戻ってKotlinを知ることにする。
文字列の比較に==が利用できる
今更知ってしまった。
1 2 3 4 5 6 | val s1 = "AAA" val s2 = "BBB" val s3 = "AAA" println("s1==s2 ? ${s1 == s2}") println("s2==s3 ? ${s2 == s3}") println("s3==s1 ? ${s3 == s1}") |
注意:上記の例は、定数の比較なのでjavaでも正しく動くことがある。
Listへの要素追加は+=で行える。
もちろんjavaのように.add()でも追加できるが、やはりKotlin流に。
1 2 3 4 5 6 | val l1 = mutableListOf<String>() l1.add("Zero") l1.add("One") l1 += "Two" l1 += "Three" println("l1[$l1]") |
なんか、スッキリする。
Listから値を取得するときは配列の様に括弧で取得できる。
もちろんjavaのように.get()でも取得できるが、やはりKotlin流に。
1 2 | val l2 = listOf("Zero", "One", "Two") println("l2[1]:${l2[1]} l2.get(2):${l2.get(2)}") |
こっちもスッキリ。
Mapへ値を追加するとも+=で行える。
もちろんJavaのようにput()でも行えるが、Kotlin流に。
1 2 3 4 5 6 | val m1 = mutableMapOf<String, String>() m1.put("A", "あ") m1.put("I", "い") m1 += "U" to "う" m1 += "E" to "え" println("m1:$m1") |
素晴らしい。
Mapから値を取得しようとして、キーが存在したらそれを取得し、存在しなかったら、新たに値を作成し、指定したキーで値を追加するgetOrPutというメソッドがある。
1 2 3 4 5 6 | val m2 = mutableMapOf("A" to "あ", "U" to "う") val a = m2.getOrPut("A", {"ああ"}) print("a:$a") val i = m2.getOrPut("I", {"いい"}) print("i:$i") print("m2:$m2") |
これは便利。入力データの重複を加味しながら処理をすることはよくあるので、このメソッドを使えば繰り返しの処理がかなり綺麗に書ける。
Mapから値を取得しようとして、キーが存在したらそれを取得し、存在しなかったらデフォルト値を取得するgetOrElseというメソッドがある。
1 2 3 4 5 | val m3 = mutableMapOf("A" to "あ", "U" to "う") val a = m3.getOrElse("A", {"ああ"}) print("a:$a") val i = m3.getOrElse("I", {"いい"}) print("i:$i") |
これも使い道はあると思う。getOrPut()ほどの感動はないが。
文字列中に変数を展開するとき、toString()を明示的に書くことは薦められない。
1 2 3 | val l4 = listOf("あ", "い", "う") println("リスト:$l4") println("リスト:${l4.toString()}") |
どちらも同じように動いてくれるが、toString()を呼ぶ必要はない。
toString()も明示的で嫌いじゃないけど。
まとめ
やはり、たまには振り返らなくてはならない。
Kotlin素晴らしい。
でも、一通りわかった気がしてきてしまったので、
次はrubyに手を出したい。
Jythonに変わるJavaモジュールを使える言語として選択したKotlinだったが、
やはりコンパイルは面倒。コンパイル時間も微妙にかかるし。
コンパイルしてしまえば、Jythonの10倍くらい速く動く気がするけど。
ツールを作る上では、気軽にソースを変更したい。
なので、JRubyを。
JythonのPython2系の文字コード関連で悩まされたので、
JRubyにその辺の問題がないのであれば、早く使ってみたい。
- Kotlin 1.2.31がいつの間にかリリースされていた
- Kotlin1.2.50がリリースされていた
- Kotlinで$(ドルマーク)を出力する
- KotlinでJAXB
- Kotlinを使ってみた
- Kotlin今日の発見 2018年8月3日