2017-05-15 12 views
1

私はTuple3(RouterIDの、pinModel、色に変換したい場合クラスオブジェクト(ID、リスト)は、複数のリストに(オブジェクト(ID、フィールド)

case class Router(routerId: String, modelInfo: List[Map[String,String]]) 

を有する)

modelInfo =リスト[マップ[pinModel、色]例えば

、私はルータのオブジェクトを持っている場合:

val router = Router("123", List(Map("pinModel1"-> "Red", "pinModel2"-> "Black", "pinModel3"-> "Yellow"))) 

私は、出力がなりたい:私はそれを達成することができ

val routers = List(("123","pinModel1","Red"),("123","pinModel2","Black"),("123","pinModel3","Yellow")) 

一つの方法は、Router.modelInfoのリストを取得し、その多くのルータインスタンスを作成することです。しかし、私はよりクリーンなソリューションが必要であると信じています。

提案がありますか?おそらく、

答えて

1

val routers = 
    router.modelInfo.flatMap(_.map { case (key, value) => (router.routerId, key, value)}) 

得られます

(123,pinModel1,Red) 
(123,pinModel2,Black) 
(123,pinModel3,Yellow) 
+0

感謝のYuval。これは役に立ちました。答えを受け入れる – Aiden

1
for { 
    m <- router.modelInfo 
    (k, v) <- m 
} yield (router.routerId, k, v) 

(実際にはポップアップのYuvalのソリューションとして同じものはどれ。)

+1

さらに簡潔に:) – Aiden

関連する問題