質問

私はList[Option[A]]のようなものを持っていると私はList[A]にこれを変換したい場合は、

は、標準的な方法はflatMapを使用することです。

scala> val l = List(Some("Hello"), None, Some("World"))
l: List[Option[java.lang.String]] = List(Some(Hello), None, Some(World))

scala> l.flatMap( o => o)
res0: List[java.lang.String] = List(Hello, World)
今だけのアイデンティティ機能o => oです。私が行うにはいくつかの方法があるだろうと思っています。

l.flatMap(Identity) //return a List[String]
あなたがobjectをgenerifyことができないとして、しかし、私は仕事にこれを取得することはできません。私は無駄にいくつかのことを試してみました。誰もが仕事に、このようなものを持っている?

役に立ちましたか?

解決

アイデンティティ機能はPredef のでありますます。

l flatMap identity[Option[String]]

> List[String] = List(Hello, World)

expresion用Aが進歩して、私が思うます:

for(x <- l; y <- x) yield y

編集

I型パラメータ(オプション[文字列])が必要とされる理由を理解することを試みました。問題は、反復処理可能[T]のオプションから型変換[T]であると思われる。

あなたのように恒等関数を定義する場合:

l.flatMap( x => Option.option2Iterable(identity(x)))

型パラメータを省略することができる。

scroll top