私はリスト[T]に変換したいいくつかのオプション[T]を持っています。私は理解のためにこれを達成しようとしている:この場合複数のオプション[T]をリスト[T]に変換する
val someOption: Option[(String, String)] = Some(("bla", "woo"))
val anotherOption: Option[String] = None
val result = for {
(a, b) <- someOption
c <- anotherOption
} yield List(a, b, c)
しかし
result
はタイプOption[List[String]]
のとなりNone
が含まれています。代わりにresult
のタイプがList[String]
で、値がList("bla", "woo")
になるようにすることができます。
編集:これは実際にはSomeOtherThing(a, b)
をインスタンス化してリスト項目にするために、a
とb
を使用する必要があります。それをやっての
うーん...このパズルの最も複雑な部分が分解されたコンポーネントへのあなたの 'T'から暗黙の型変換 '、Bを提供することです'。そして、それでは...あなたがコンポーネントをジェネリックな 'List'に置いたときに、あなたのコンポーネントの'型 'が失われてしまうのはどうでしょうか?暗黙のデコンストラクタが対応する型のコンポーネントに 'タグを付ける 'ようにして型を保持することもできますが、それらをgenericリストにどのように入れますか? –
あなたの編集を見て、あなたは一般的な解決策を望んでおらず、この特定の場合にそれを解決しようとしています。 –
だから、明確にするために、 'Option(Tuple(N))'を '' T''で 'List [T]'に変換したいのですか? –