2020年9月10日木曜日

Kotlin でスプレット演算子を使うと enum の values() に値を追加したリストを簡単に作れる

以下のような Rank クラスがあるとして、 enum class Rank { GOLD, SILVER, BRONZE } ランクなしという意味の null を含むリストを作りたいとします。

↓ 作りたいリスト val list: List<Rank?> = ... println(list) // [null, GOLD, SILVER, BRONZE] Rank の一覧は Rank.values() で取れるので val ranks: Array<Rank> = Rank.values() println(ranks.joinToString()) // GOLD, SILVER, BRONZE listOf(null) で null だけのリストを作って + で ranks と合わせたリストを作ることもできますが、 val list: List<Rank?> = listOf(null) + ranks スプレット演算子を使うと余計なリスト(= null だけのリスト)を作らずに済みます。 val list: List<Rank?> = listOf(null, *ranks)