- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上我想提取一堆选项 a、b 等。这是在 Scala 中执行此操作的最佳方法吗?在我看来,括号中的 for-yield 有点令人困惑。
(for {
a <- a
b <- b
c <- c
...
} yield {
...
}) getOrElse {
...
}
最佳答案
尝试使用 map
和 flatMap
反而。假设您有以下类层次结构:
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/
我想创建一个方法,它将一个选项数组和一个默认值作为参数,并返回第一个非空选项,否则返回默认值: def customGetOrElse[T](options : Array[Option[T]], d
我有以下代码: val userName = users.get(userID) match { case Some(user) => user.name case None => "Inva
我正在尝试创建一个函数来计算一个表达式,如果该表达式的结果不是“有限的”(由 is.finite 定义),那么它将返回一个默认值。在抛出错误的情况下,该函数仍应返回默认值。该函数也应该被向量化。 这应
在具有可选类型的语言中,您有一个名为 orElse 或 getOrElse 的 fn,它可以让您这样做: None.getOrElse(1) == 1 Some(2).getOrElse(1) ==
为什么当我输入这些时一切正常? Right(2).left getOrElse Right(4).left getOrElse Left("Error") 但是当我输入这个编译失败? Right[St
奇怪的... val h = new HashMap[Long, Int]() def mydefault0():Int = 101 println( h.getOrElse(
下面的代码有更好的写法吗? val t = map.get('type).getOrElse(""); if (t != "") "prefix" + t; 对内联代码感兴趣 val t = map.
为什么此代码在 Scala 2.9.2 中引发类型不匹配错误?我期望 getOrElse 返回类型 String 但实际上它返回 java.io.Serialized: scala> implicit
我是 Scala 的新手,每个人都说当 myFoo 包含在 Option 中时,使用类似 if myFoo.get is null then 的东西是不好的 (例如 Option[myFoo])在 S
在 Scala 中,我有一个散列 var unigram = new HashMap[String, Int] 我想从散列中获取元素的值,或者如果该元素不存在,我想获取 0。 所以我尝试像这样使用 g
val label = Try("here_a").getOrElse("here_b") 在 here_a 的情况下没有找到,这不是回退到here_b .为什么是.getOrElse无法正常运行?
我正在尝试遵循教程 https://www.jamesward.com/2012/02/21/play-framework-2-with-scala-anorm-json-coffeescript-j
考虑 scala> val m = Map('a -> 3, 'b -> 4) m: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 3,
我正在尝试使用 Option.getOrElse()方法,但它返回 etiher Any或 ScalaObject而不是 Option 的正确类的实例被参数化了。我找不到有关此问题的任何提及,而且似乎
我是一个相当新的 Scala 开发人员。我是一位经验丰富的 Java 开发人员,到目前为止,我一直喜欢 Scala 的简单性。我真的很喜欢函数式结构,而且它们经常会迫使您编写更清晰的代码。然而最近我注
我有一个包含一些对的映射,我想为一个键分配一个默认值( bool 值),当我使用 getOrElse 时,键的默认值是一个字符串,我正在寻找一种方法来做到这一点一个整数或 bool 值。 例如: va
我对以下代码感到困惑:代码是人为的,但我仍然认为它是尾递归的。编译器不同意并产生错误消息: @annotation.tailrec def listSize(l : Seq[Any], s: Int
基本上我想提取一堆选项 a、b 等。这是在 Scala 中执行此操作的最佳方法吗?在我看来,括号中的 for-yield 有点令人困惑。 (for { a <- a b <- b c <-
在下面,maybeNext.map{rec}.getOrElse(n) 行使用 Option monad 来实现递归或转义模式。 scala> @tailrec
据我所知 Scalaz 的 \/没有get方法。有时我确定 \/ 中包含的值是正确的值,我不想使用 getOrElse .我想直接拿到。 ("3".right[Int]) getOrElse("123
我是一名优秀的程序员,十分优秀!