DEV Community

kaede
kaede

Posted on • Edited on

Kotlin 基礎 Part 1 -- !! や ?: と ?.let で Nullable な値を処理する

why

Kotlin には様々な null の扱いの演算子があるのでまとめてみた

https://play.kotlinlang.org/

ここで実行して試しました


通常の実行

    val maybeNullValue = null
    println(maybeNullValue)
// null
Enter fullscreen mode Exit fullscreen mode

普通に print すると null が返ってくる


nullableValue!! で null が返ってくるくらいなら ぬるぽ のエラーを返す

https://engawapg.net/kotlin/116/what-is-kotlin-exclamation-mark/

    val nullableValue = null
    println(nullableValue!!)
// Overload resolution ambiguity
// 多分ぬるぽ
Enter fullscreen mode Exit fullscreen mode

null が入っている値に使うとぶっ壊れる演算子
エラーになるけど、null が渡るよりマシな場面に使えると推測。

Nullable な型に Null 不可で突っ込みたい時に使える


nullableValue?:"" で null だった場合は空の文字列を返す

    val maybeNullValue = null
    println(maybeNullValue?:"empty")
// empty
Enter fullscreen mode Exit fullscreen mode

?: を使えば、それが null だった時に次の値を入れられる。

多くの場合は空の文字列を入れるだろう。
わかりやすいようにサンプルでは"empty"の文字列を入れている

こうすれば安全だし書きやすい。


nullableValue?.let { } の中に処理を書いて null な時は実行されないようにする

https://www.tutorialspoint.com/best-way-to-null-check-in-kotlin#:~:text=let%22%20operator,a%20non%2DNULL%20able%20value.

nullableValue?.let { // execute(nullableValue) }

こうすれば null がないときにはスキップされる

    val nullableValue = "text"
    nullableValue ?.let {
      println(nullableValue)
    }
    println("executed")

//text
//executed
Enter fullscreen mode Exit fullscreen mode

text を入れてみると print されるが

    val nullableValue = null
    nullableValue ?.let {
      println(nullableValue)
    }
    println("executed")
//
//executed
Enter fullscreen mode Exit fullscreen mode

null が入っているとスキップされる。
ワンライナーで書きやすい。

Top comments (0)