2016-07-22 7 views
1

私はまだオプションを使用していないデータ型で、次のデータを持っている[任意]は、いくつかの(地図を= =は[任意]オプションのうち、値の取得一部(マップ)

+0

をあなたはかなり任意の型にキャストすることができます何かにこれはコードの匂いである時間の99%です。タイプシステムをウィンドウから投げ出さずに、あなたが望むことをやり遂げることができます。 – marios

答えて

2

マップのタイプを知っていれば(少なくとも、ラベルのタイプを知っていれば)、ラベルを取得することができます。それは価値です)asInstanceOf

val a = Option[Any](Map("a" -> "b", 1 -> 2)) 

a.flatMap(_.asInstanceOf[Map[Int, Int]].get(1)) 
// Some(2): Option[Int] 
で引き出すことができます

通常、それはasInstanceOfを使用するのではなく、手の前にタイプを見極める必要がない方が良いでしょう...そして、あなたがより簡単に使用することができます(Javaでのように)Scalaで

a.flatMap(_.get("label")) 
+0

これは動作しますが、あなたが代替手段を持っていない限り、タイプシステムをバイパスすることに反対します。 – marios

+2

@marios 100%が同意します。最後の段落は次のようになっています:asInstanceOfを使用しないでください。通常はより良い方法です。 –

関連する問題