Kotlin今日の発見 2018年8月3日

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? = null
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は便利。

同じタグの記事
同じカテゴリの記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA