gpt4 book ai didi

scala - for-yield-getOrElse 是典型的 Scala 还是有更好的方法?

转载 作者:行者123 更新时间:2023-12-04 12:10:52 28 4
gpt4 key购买 nike

基本上我想提取一堆选项 a、b 等。这是在 Scala 中执行此操作的最佳方法吗?在我看来,括号中的 for-yield 有点令人困惑。

(for {
a <- a
b <- b
c <- c
...
} yield {
...
}) getOrElse {
...
}

最佳答案

尝试使用 mapflatMap反而。假设您有以下类层次结构:

case class C(x: Int)
case class B(c: Option[C])
case class A(b: Option[B])

val a = Some(A(Some(B(Some(C(42))))))

为了提取 42你可以说:
a.flatMap(_.b).flatMap(_.c).map(_.x).getOrElse(-1)

这大致相当于:
for(
a <- a
b <- a.b
c <- b.c)
yield c.x

除了它返回 Some(42) .事实上 for领悟其实就是翻译成 map的序列/ flatMap调用。

关于scala - for-yield-getOrElse 是典型的 Scala 还是有更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735611/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com