我是新来的Scala和每个人都告诉它的不好用类似if myFoo.get is null then时,myFoo被包装在一个Option(如Option[myFoo]Scala中)
我一直在看,getOrElse但所有引用getOrElse的答案都让我更加困惑,尽管听起来很简单("getOrElse").
这就是我想要做的.如果myFoo为null则执行,something但如果不是则执行somethingElse.
有人可以用最简单的方式为我解释一下吗?不一定是一个很长的答案,但我会感谢我能得到的所有帮助.
看起来你没有Option,但有些价值可能是null:
如果myFoo为null
在这种情况下,你必须用Option:包装它Option(myFoo).
val result = Option(myFoo) match {
case Some(value) =>
// something
// you could use `value` here
case None =>
// something else
}
Run Code Online (Sandbox Code Playgroud)
Option(myFoo)包裹myFoo着Option:如果null你得到了,None否则你会得到Some(myFoo).
请参阅此文章:scala.Option Cheat Sheet了解使用的方法Option.
另外看看这个答案.
请注意,如果myFoo是Option,则不需要将其包装:替换Option(myFoo) match为myFoo match.
另外你应该注意,get在空Option(on None)上抛出异常而不是返回null:
如果myFoo.get为null则
你会得到一个例外,而不是null.你永远不应该使用get.
| 归档时间: |
|
| 查看次数: |
4991 次 |
| 最近记录: |