Kotlin今日の発見 2018年8月3日
android studioのドキュメントを眺めていた。
Kotlinのことが書かれていた。
また、今更ながら便利な構文を見つけた。
Elvis Operator
代入がnullになってしまうときの処理を書ける。
1 2 3 4 5 6 7 | val hashMap = hashMapOf<String, String>( "A" to "Alpha", "B" to "Bravo", "C" to "Charlie") val nameA = hashMap["A"] ?: "no name." val nameD = hashMap["D"] ?: "no name." println("nameA:[$nameA], nameD:[$nameD]") |
今まで、if (nameA == null) … と書いてしまっていた。
処理分岐に用いることもできる。
1 2 3 4 | fun myFun(hashMap: HashMap<String, String>) { val name = hashMap["A"] ?: return println("nameA:[$nameA]") } |
これも、ifで判定していた。早く知っていれば…
そもそも、hashMapがnullかもしれない場合
1 2 3 | var map: MutableMap<String, String>? = null val mapSize = map?.size ?: -1 println("mapSize:[$mapSize]") |
?.と?:で、nullに対処できる。
複数の値を返却する関数
data classを利用することで、複数の値を返却する関数やメソッドを定義できる。
1 2 3 4 5 6 7 8 9 10 11 | data class Result(val code: Int, val msg: String) fun myFun2(i: Int): Result { if (i > 0) { return Result(0, "OK") } return Result(9, "NG") } val (code1, msg1) = myFun2(1) println("code:$code1, msg:$msg1") val (code2, msg2) = myFun2(-1) println("code:$code2, msg:$msg2") |
戻り値はResultクラスのインスタンスのまま、受け取っても良い気もする。戻り値の使い方次第だけれど。
javaだと、クラスを作るのが面倒なので、複数の値が簡単に返却できればと思うけど、Kotlinなら簡単にdata class定義できるし。
まとめ
やっぱりKotlinは便利。
同じタグの記事
- Kotlin 1.2.31がいつの間にかリリースされていた
- Kotlin1.2.50がリリースされていた
- Kotlinで$(ドルマーク)を出力する
- KotlinでJAXB
- Kotlinを使ってみた
- Kotlin再発見
同じカテゴリの記事