3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Kotlin] Map の withDefault

Posted at

KotlinのMapにwithDefaultというメソッドが生えているらしい。

試してみた。

val fruits = mapOf(
    "イチゴ" to "🍓",
    "バナナ" to "🍌",
    "ミカン" to "🍊"
).withDefault {
    "❓"
}

val s = fruits.getValue("イチゴ") // 🍓
val p = fruits.getValue("パイナップル") // ❓
val r = fruits["ラズベリー"] // null

ツイートの通りの結果になった。

デフォルト値を返したとしても、それが元の Map に詰められるわけではない。デフォルト値は毎回生成される。

fruits.getValue("マンゴー")
fruits.getValue("ブドウ")
val keys = fruits.keys // [イチゴ, バナナ, ミカン]

別の Map を作ったらもちろん withDefault の効果は消える。

val fruits2 = fruits + mapOf("モモ" to "🍑")
val p2 = fruits2.getValue("パイナップル") // NoSuchElementException

感想

getValue はデフォルト値を返すが、 getnull を返す、というのはどういうところが嬉しいんだろうか? :thinking:
getValue を使うつもりでうっかり get を使っていた、ということが起こりそう…。使いどころがよくわからない。

3
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?