Scala 斯卡拉:“我的朋友。”;getOrElse";在一个街区里
我是Scala新手&每个人都告诉我,如果myFoo.get为null,那么在Scala中将Scala 斯卡拉:“我的朋友。”;getOrElse";在一个街区里,scala,Scala,我是Scala新手&每个人都告诉我,如果myFoo.get为null,那么在Scala中将myFoo包装在选项中(例如Option[myFoo])时使用这样的东西是不好的 我经常遇到getOrElse,但是所有提到getOrElse的答案都让我更加困惑,尽管听起来很简单(“getOrElse”) 这就是我要做的。如果myFoo为空,则执行somethingese,但如果不是空,则执行somethingese 有人能用最简单的方式给我解释一下吗?答案不一定很长,但我很感激能得到的所有帮助。看起来
myFoo
包装在选项中(例如Option[myFoo]
)时使用这样的东西是不好的
我经常遇到getOrElse
,但是所有提到getOrElse的答案都让我更加困惑,尽管听起来很简单(“getOrElse”)
这就是我要做的。如果myFoo
为空,则执行somethingese
,但如果不是空,则执行somethingese
有人能用最简单的方式给我解释一下吗?答案不一定很长,但我很感激能得到的所有帮助。看起来你没有选项,但有些值可能是空的:
如果myFoo为null
在这种情况下,您必须使用选项
:选项(myFoo)
选项(myFoo)
用选项
包装myFoo
:如果为空
您将获得无
,否则您将获得一些(myFoo)
有关使用选项的方法,请参阅本文
也来看看
请注意,如果myFoo
是一个选项
,则不需要将其包装:将选项(myFoo)匹配
替换为myFoo匹配
您还应该注意到get
on empty选项
(onNone
)抛出异常,而不是返回null
:
如果myFoo.get为null,则
您将得到一个异常,而不是null
。您不应该使用get
选项可以是两种类型:部分和无。None表示某些包含值的消失,而另一些表示它有一个值。将选项视为1个元素的列表。所以当你做一个getOrElse时,你真正要说的是给我这个值,如果是空的,给我这个值。谢谢。这个答案和@senia让我非常清楚。谢谢:)@Jon:请注意,如果myFoo
实际上是一个选项
,则无需将其包装-将选项(myFoo)匹配
替换为myFoo匹配
。
val result = Option(myFoo) match {
case Some(value) =>
// something
// you could use `value` here
case None =>
// something else
}