Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Scala中Java数据类型的null值_Scala - Fatal编程技术网

检查Scala中Java数据类型的null值

检查Scala中Java数据类型的null值,scala,Scala,我调用了Scala代码,它提供了JavaDouble类型,可以是null如何在Scala代码中检查null值和非null值 val myJavaDoubleValue: Double = thirdpartyCall.collectValue() if(myJavaDoubleValue == null) { println("Is NULL") } else { println("Is NOT NULL") } 关于以Scala方式执行此操作的任何建议?请使用以下选项: val my

我调用了Scala代码,它提供了Java
Double
类型,可以是
null
如何在Scala代码中检查null值和非null值

val myJavaDoubleValue: Double = thirdpartyCall.collectValue()
if(myJavaDoubleValue == null) {
  println("Is NULL")
} else {
  println("Is NOT NULL")
}
关于以Scala方式执行此操作的任何建议?

请使用以下选项:

val myJavaDoubleValue: Option[Double] = Option(thirdpartyCall.collectValue())
如果结果为空,上述操作将导致
None
,否则将导致
Some(actualValue)


请参见Scala以与Java相同的方式支持
null
。因此,您的代码在语法上是正确的

然而,一种更现代的方法是确保您的代码几乎永远不会触及
null
值。为了做到这一点,一种可能的方法是使用Scala类。
选项[T]
是一个可以定义也可以不定义的值。已定义的选项由
Some[T]
表示,而未定义的选项由
None
表示

选项(thirdpartyCall.collectValue())
将返回一个
选项[Double]
。检查
选项中包含的值有多种方法,Scala惯用的方法之一是:

但是,
选项
的功能要强大得多。它支持像
map
flatMap
fold
这样的方法,这些方法可以让您更加富有表现力,例如:

def optionIsDefined[A](a: A) = Option(a).fold("not defined") { value => s"defined with value: $value" }

scala> optionIsDefined(42)
res2: String = defined with value: 42

scala> optionIsDefined(null)
res3: String = not defined
是关于
选项
的优秀新手友好指南

def optionIsDefined[A](a: A) = Option(a).fold("not defined") { value => s"defined with value: $value" }

scala> optionIsDefined(42)
res2: String = defined with value: 42

scala> optionIsDefined(null)
res3: String = not defined