Kotlin今日の発見 2018年8月3日
android studioのドキュメントを眺めていた。
Kotlinのことが書かれていた。
また、今更ながら便利な構文を見つけた。
Elvis Operator
代入がnullになってしまうときの処理を書ける。
val hashMap = hashMapOf
"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) … と書いてしまっていた。
処理分岐に用いることもできる。
fun myFun(hashMap: HashMap
val name = hashMap["A"] ?: return
println("nameA:[$nameA]")
}
これも、ifで判定していた。早く知っていれば…
そもそも、hashMapがnullかもしれない場合
var map: MutableMap
val mapSize = map?.size ?: -1
println("mapSize:[$mapSize]")
?.と?:で、nullに対処できる。
複数の値を返却する関数
data classを利用することで、複数の値を返却する関数やメソッドを定義できる。
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再発見
コメントを残す