2013-07-12 4 views
7

にキャストすることができない、私はこのエラーを取得しています[String]scala.Someは、このアプリケーションではjava.lang.Stringで

編集:私はここでさまざまなタイプを扱っていることを理解していますが、何もしないでもっと簡単な方法があるのか​​どうか疑問に思っていました。

match { case....} 

配列。私はx.emailをJSON目的のStringにキャストしているので、nullフィールドはJSONオブジェクトによって処理されます。私は明示的に対処する必要はありません。不明な点がありましたら申し訳ありません。

+0

単純な答えは 'foreach'メソッドを使用しています。 –

答えて

9

まあ、それはあなたが処理する方法を決定し、x.emailString ...

まずないエラーと種類からあなたに明らかですNone(タイプOption[String]の有効なオプション)。あなたは、その後、多くのオプションを持っ含むがこれらに限定されない:

x.email match { 
case None => ... 
case Some(value) => println(value) // value is of type String 
} 

代わりに、class OptiongetgetOrElse方法を見てみましょう。あなたはちょうどNone場合は気にしない場合、その後、最後に

x.email.orNull // calls getOrElse(null) 

を使用することも可能null値を持つ文字列にオプションを「劣化させる」にしたい(としたい場合は

)それを無視して、そしてちょうどNone場合には、本体を「スキップ」なる「理解のための」シンプルを使用します。

for (value <- x.email) { 
    // value is of type String 
} 
+2

おそらく、 'getOrElse(null)'の代わりに 'orNull'を使うでしょう。 –

+0

私は何か新しいことを学ぶ –

1

あなたが使用パターンマッチングしたいことがあります。

x.email match { 
    case Some(email) => // do something with email 
    case None => // did not get the email, deal with it 
} 
4

キャストは、あなたが共同で見ているべきであるかではありませんそれはオプションについて言えば嫌です。以下のREPLセッションを見て:

C:\>scala -deprecation -unchecked 
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0). 
Type in expressions to have them evaluated. Type :help for more information. 

scala> val email:Option[String] = Some("[email protected]") 
email: Option[String] = Some([email protected]) 

scala> email.getOrElse("[email protected]") 
res0: String = [email protected] 

scala> 

ます。また、このSO質問で見たいと思うかもしれません:What is the point of the class Option[T]?

とオプションAPI here

一般的に、鋳造/強制、言えばkind-ですFP世界のタブーの:)

1
x.map(_.toString).getOrElse("") 
関連する問題