activities
typeの変数があるとしますList<Any>?
。リストが null でも空でもない場合は、何かを行いたいと考えています。それ以外の場合は、別のことを行いたいと考えています。私は次の解決策を思いつきました:
when {
activities != null && !activities.empty -> doSomething
else -> doSomethingElse
}
Kotlinでこれを行うためのより慣用的な方法はありますか?
activities
typeの変数があるとしますList<Any>?
。リストが null でも空でもない場合は、何かを行いたいと考えています。それ以外の場合は、別のことを行いたいと考えています。私は次の解決策を思いつきました:
when {
activities != null && !activities.empty -> doSomething
else -> doSomethingElse
}
Kotlinでこれを行うためのより慣用的な方法はありますか?
アップデート:
kotlin 1.3 提供開始isNullOrEmpty
!
https://twitter.com/kotlin/status/1050426794682306562
これを試して!非常に明確な。
var array: List<String>? = null
if (array.orEmpty().isEmpty()) {
// empty
} else {
// not empty
}
他の回答に加えて、 safe-call 演算子を拡張メソッドと組み合わせて使用することもできますisNotEmpty()
。安全な呼び出しのため、戻り値は実際には、またはのBoolean?
いずれかになります。or句で式を使用するには、次のように明示的に確認する必要があります。true
false
null
if
when
true
when {
activities?.isNotEmpty() == true -> doSomething
else -> doSomethingElse
}
elvis 演算子を使用した代替構文:
when {
activities?.isNotEmpty() ?: false -> doSomething
else -> doSomethingElse
}
?.forEach
必要に応じて使用を検討してください
activities?.forEach {
doSmth(it)
}
あなたが説明した動作が正確に必要な場合、あなたのバリアントは、私が考えることができるより簡潔なものよりも読みやすいと思います。(それでもシンプルif
で十分です)
私の場合、価格はオプションですorEmpty()
。指定された配列がnullの場合は、指定された配列または空の配列を返す次の方法でケースを処理します。
val safeArray = poi.prices.orEmpty()
if (!safeArray.isEmpty()) {
...
}