- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Scala 的新手,每个人都说当 myFoo
包含在 Option 中时,使用类似
(例如 if myFoo.get is null then
的东西是不好的Option[myFoo]
)在 Scala 中
我不断遇到 getOrElse
但所有提到 getOrElse 的答案都让我更加困惑,尽管它听起来很简单(“getOrElse”)。
这就是我想要做的。如果 myFoo
为 null,则执行 something
,但如果不是,则执行 somethingElse
。
有人可以用最简单的方式为我解释一下吗?不需要很长的答案,但我会很感激我能得到的所有帮助。
最佳答案
看起来你没有Option
,但是一些值可能是null
:
If myFoo is null
在这种情况下,您必须使用 Option
包装它:Option(myFoo)
。
val result = Option(myFoo) match {
case Some(value) =>
// something
// you could use `value` here
case None =>
// something else
}
Option(myFoo)
用 Option
包装 myFoo
:如果它是 null
你会得到 无
否则你会得到Some(myFoo)
。
请参阅本文:scala.Option Cheat Sheet用于使用 Option
的方法。
另请查看 this answer .
请注意,如果 myFoo
是一个 Option
,那么您不需要包装它:将 Option(myFoo) match
替换为 myFoo 匹配
。
您还应该注意,get
在空的 Option
上(在 None
上)抛出异常而不是返回 null
:
if myFoo.get is null then
您将得到一个异常,而不是 null
。永远不要使用 get
。
关于Scala: block 中的 "getOrElse",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20710186/
我想创建一个方法,它将一个选项数组和一个默认值作为参数,并返回第一个非空选项,否则返回默认值: 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
我是一名优秀的程序员,十分优秀!