私は結果の中にOptionオブジェクトの代わりに実際の値を持っています。結果からオプションを削除
case class MyObj(id: String, objVal: List[String])
val listOfListOfIds = List(List(id1, id2, id3), List(id4, id5, id6))
val allMyObjs = List(
MyObj("id1",List("val1a", "val1b")),
MyObj("id2",List("val2a", "val2b")),
MyObj("id3",List("val3a", "val3b")),
MyObj("id4",List("val4a", "val4b")),
MyObj("id5",List("val5a", "val5b")),
MyObj("id6",List("val6a", "val6b"))
)
listOfListOfIds.map { _.map { id => allMyObjs.find(obj => obj.id == id).map { _.objVal map { v => Future(v) } } } }
戻りList[List[Option[List[scala.concurrent.Future[String]]]]]
、どのように代わりList[List[List[scala.concurrent.Future[String]]]]
を取得するには?
あなたは 'オプション[一覧[T]]' '空の可能性のリストに[T]' '' opt.getOrElse(List.empty [T])を呼び出しを有効にすることができます。このコードは、より明示的な型を持つためにケースクラスを使用することで利益を得ます。 – cchantep
これは実際のコードですか?私は2つのコレクション間の交差をしたい場合、なぜ 'HashSet'を使わないのでしょうか?また、リストのリストをフラット化できますか? –
少なくとも、中間の不変変数の使用をお勧めします。 List [List [List [List [List [List [list]] [] []]型は理解できないと考えています。 –