Scala的支持一樣的Java null
。所以你的代碼是合理正確的。
但是,更現代的方法是確保您的代碼幾乎永遠不會觸及null
值。爲了做到這一點,一種可能的方式是使用Scala Option
類。 Option[T]
是一個值,可以或不可以定義。已定義的選項由Some[T]
表示,而未定義的選項由None
表示。
Option(thirdpartyCall.collectValue())
將返回Option[Double]
。有多種方法來檢查包含在Option
的價值,斯卡拉,慣用的方式之一來執行你想要做的是pattern matching:
Option(thirdpartyCall.collectValue()) match {
case Some(value) =>
println(s"value is defined: $value")
case None =>
println("value is not defined")
}
然而,Option
比更強大。它支持像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
This是一個偉大的新來者對Option
友好的嚮導。