2016-11-16 6 views

答えて

6
d.getOrElse(Double).asInstanceOf[Double] 

は意味を成さない。 dを想定し

は、あなたがそれをキャストすることはできませんDoubleを持つようにしたい場合は、あなたがOption「外」の値を取得する必要がOption[Double]です。

getOrElseがある場合は値を取得し、存在しない場合は代替値を返します(例:None)。例えば

:その後、Option[Double]を入力した

d.getOrElse(0) // 0, or anything that makes sense as a fallback 

d場合d.getOrElse(0)Double型を持ちます。

+0

を、私は(d.getOrElseにd.getOrElse(ダブル).asInstanceOf [ダブル]からそれを変更することとしています0) – Rushabh

+0

はい。ここで、 '0'はあなたのドメイン内の任意の合理的なデフォルトに置き換えることができます。 –

+0

ありがとうございました。私はエラーが持続する場合、あなたに戻ってみることを試みます。 – Rushabh

5

Optionの処理方法ではありません。あなたは多分あなたは(値が存在しない場合があります)Optionの意味を伝播したいd.getOrElse(<a-good-default-value-like-zero-maybe>)

他の状況をやりたい、とそれらになります.getOrElseか(この状況では)おそらく.map

val ty=ttnew.distinct().leftOuterJoin(rank).map{ case ((key),(c,d)) => (key,c._1,c._2,c._3,d.getOrElse(Double).asInstanceOf[Double]) } 

を使用します例あなたは.mapを使用する必要があります。

val res: Option[String] = optionalDouble.map(doubleValue => callSomeFunctionThatConvertsDoubleToString(value)) 

あなたも、パターンマッチングや抽出を使用して他のことを行うことができます。例えば、.collect(それは.mapだが、カバーされていない場合もある)を使用して:だから

val ty=ttnew.distinct().leftOuterJoin(rank).collect{ case ((key),(c,Some(d))) => (key,c._1,c._2,c._3,d) } 
+0

しかし、この場合はどのように地図を使うことができますか?それは愚かな質問かもしれないが、私は全く新しいスカラーです – Rushabh

+0

いくつかの選択肢を追加@rrr – pedrorijo91

+0

このケースを使用して、それはdからのすべてのケースをカバーする? – Rushabh

関連する問題