0Pricing
Kotlin Academy · レッスン

OptionとNullable:それぞれを使う場面

ArrowのOption型とKotlinのnullable型を比較し、適切な方を選択します。

「OptionとNullable:それぞれを使う場面」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

不在を表す2つの方法

Kotlinには、値または何もない状態を表す組み込みのnull許容型(T?)があります。Arrowには、Some(value: A)とNoneを持つsealed型のOptionも用意されています。どちらも同じ問題を解決しますが、適したコンテキストが異なります。

Kotlinのnull許容型

val name: String? = findUser(id)?.name
val display = name ?: "Anonymous"

ArrowのOption<A>

import arrow.core.Option
import arrow.core.Some
import arrow.core.None
import arrow.core.toOption

val opt: Option<String> = "hello".toOption()   // Some("hello")
val absent: Option<String> = None

Optionとnull許容型の相互変換

val opt: Option<String> = nullableString.toOption()
val back: String? = opt.getOrNull()

Optionに対するmapとflatMap

val length: Option<Int> = "hello".toOption().map { it.length }  // Some(5)
val noneLength: Option<Int> = (null as String?).toOption().map { it.length }  // None

Optionに対するfilter

val positiveAge: Option<Int> = 25.toOption().filter { it > 0 }  // Some(25)
val rejectedAge:  Option<Int> = (-1).toOption().filter { it > 0 }  // None

fold:Optionを処理する

val result: String = someOption.fold(
    ifEmpty = { "Nothing here" },
    ifSome  = { value -> "Got: $value" }
)

null許容型T?を優先する場合

Option<A>を優先する場合

either { }内でOptionを使う

fun findUserOpt(id: Long): Option<User> = TODO()

fun getUser(id: Long): Either<UserError, User> = either {
    findUserOpt(id)
        .toEither { UserError.NotFound }
        .bind()
}

Optionのアンチパターン

確認問題

復習:OptionとNullable

よくある質問

「OptionとNullable:それぞれを使う場面」レッスンは無料ですか?

はい。「OptionとNullable:それぞれを使う場面」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「OptionとNullable:それぞれを使う場面」で何を学びますか?

ArrowのOption型とKotlinのnullable型を比較し、適切な方を選択します。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「OptionとNullable:それぞれを使う場面」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Either :例外を使わない型付きエラー処理
  2. Arrow Raise DSL:型付きエラーの合成
  3. OptionとNullable:それぞれを使う場面
  4. Arrowのコア型による関数型ドメインモデリング
← Kotlin Academyに戻る