2016-12-22 10 views
1

キャストを避ける方法はAnyStringですが、パターンマッチングを使用します。スカラはパターンマッチングで文字列を指定します

直接鋳造は、ソートの回避策df.select('column).first.toSeq.head.asInstanceOf[String]ですが、私は

val collectedFromSpark: Any = "someString" 
    val realString:String = collectedFromSpark match{ 
    case s:String => _ 
    case _ => throw new Exception("expected something else") 
    } 

のようなマッチングScalaのネイティブパターンを使用することを好むだろう しかし、realString:StringだけAnyなくStringを受けスパークlike df.select('column).first.toSeq.head からのデータフレームを収集しました。

このキャストはどのようにして正式な方法で作成できますか?

+0

あなたのケースを 'case s:String => s'に変更しますか? – marstran

+0

はい。それが解決策です。 –

+0

注 - 'case s:String 'を使うことは、実行時、つまりコンパイル時ではないため、Scalaでのコード臭です。私は[Parametricity](https://www.youtube.com/watch?v=BtEEZa_Q8Vw)でこの話をお勧めします。 –

答えて

3
これにあなたのケースを変更し

case s: String => s 

今ではsStringであることを知っているだろう。