私はflatMap
の実装をScalaで実装しようとしています。 Scalaプログラミングの定義に基づいてscalaでのFlatMapの動作
要素を右の引数として返す関数です。関数を各リストに適用し、すべての関数結果の連結を返します。
今、これを理解するために、私は次のようしている実装なぜList[List[String]]
がList[String]
のように扱われ、私は狂った駆動する第1の出力を見てみると
val listwords = List(List("abc"),List("def"),List("ghi"))
val res2 = listwords flatMap (_+"1")
println(res2) //output- List(L, i, s, t, (, a, b, c,), 1, L, i, s, t, (, d, e, f,), 1, L, i, s, t, (, g, h, i,), 1)
val res3 = listwords flatMap (_.apply(0).toCharArray())
println(res3) //output- List(a, b, c, d, e, f, g, h, i)
?
上記の質問の回答がありましたら、誰かがそれぞれのインナーの最初の文字列の最初の文字を選択し、結果をList[Char]
にする必要があります。だからlistwords
が与えられたら、出力はList('a', 'd', 'g')
になります。
あなたは二度 'headOption'を呼び出す必要はありません。 ' listwords.flatMap ' –
はい、これもが(_をflatMap(_ headOption)。。)は役に立ちます – maksim07
あなたは* first *文字列の最初の文字だけを必要とするので、 'headOption'が2回必要です。 –