2016-09-27 2 views
0

Javaを与えるスカラコードDoubleの型をnullにする必要があります。スカラーコードでヌル値と非ヌル値をチェックする方法はありますか?ScalaのJavaデータ型のヌル値を確認する

val myJavaDoubleValue: Double = thirdpartyCall.collectValue() 
if(myJavaDoubleValue == null) { 
    println("Is NULL") 
} else { 
    println("Is NOT NULL") 
} 

Scalaの方法でこれを行う際の提案はありますか?

val myJavaDoubleValue: Option[Double] = Option(thirdpartyCall.collectValue()) 

結果はそうでないSome(actualValue)で、nullの場合は、上記のNoneになります:

答えて

3

ScalaはJavaのと同じようにnullサポートを参照してください。したがって、コードは構文的に正しいです。

しかし、より現代的なアプローチは、あなたのコードがnullの値にほとんど触れることがないようにすることです。これを行うには、Scala Optionクラスを使用する方法があります。 Option[T]は、定義されていてもいなくてもよい値です。定義済みのオプションはSome[T]で表され、未定義のオプションはNoneで表されます。

Option(thirdpartyCall.collectValue())Option[Double]を返します。 Optionに含まれる値をチェックするための複数の方法は、あなたがやりたいことを実行するためのScala-慣用的な方法の一つはpattern matchingで、あります

しかし
Option(thirdpartyCall.collectValue()) match { 
    case Some(value) => 
    println(s"value is defined: $value") 
    case None => 
    println("value is not defined") 
} 

Optionがはるかに強力なものを超えています。それは例えば、mapflatMapとあなたも、より表現することを可能にする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 

ThisOptionに大きな新人フレンドリーなガイドです。

関連する問題