0Pricing
Kotlin Academy · 课时

Option 与 Nullable:如何选择

比较 Arrow 的 Option 类型与 Kotlin 可空类型,并做出恰当选择。

Option 与 Nullable:如何选择 是 CoddyKit 上的免费 Kotlin Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kotlin Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kotlin Academy 课程共包含 4 节课。

表示缺失值的两种方式

Kotlin 内置的可空类型(T?)表示“一个值或没有值”。Arrow 还提供 Option,这是一种包含 Some(value: A) 和 None 的密封类型。两者解决的是同一个问题,但适用的上下文不同。

Kotlin 可空类型

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 与可空类型之间转换

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" }
)

何时优先使用可空类型 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 与 Nullable:如何选择」课时是免费的吗?

是的 — 「Option 与 Nullable:如何选择」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Academy 课程共包含 4 节课。

「Option 与 Nullable:如何选择」这节课中我会学到什么?

比较 Arrow 的 Option 类型与 Kotlin 可空类型,并做出恰当选择。 你通过在浏览器中直接运行的动手代码来练习 Kotlin Academy,全天候 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