1. ホーム
  2. スカラ

[解決済み] 理解する `andThen`

2022-03-03 08:11:20

質問

こんなことがありました andThen しかし、それを正しく理解していなかった。

さらに見るために、私は 関数1.andThen ドキュメント

def andThen[A](g: (R) ⇒ A): (T1) ⇒ A

mm マルチマップ のインスタンスです。

scala> mm
res29: scala.collection.mutable.HashMap[Int,scala.collection.mutable.Set[String]] with scala.collection.mutable.MultiMap[Int,String] = 
                    Map(2 -> Set(b) , 1 -> Set(c, a))

scala> mm.keys.toList.sortWith(_ < _).map(mm.andThen(_.toList))
res26: List[List[String]] = List(List(c, a), List(b))

scala> mm.keys.toList.sortWith(_ < _).map(x => mm.apply(x).toList)
res27: List[List[String]] = List(List(c, a), List(b))

注 - 以下のコードは DSL の動作

andThen は強力ですか?この例からすると、次のようになります。 mm.andThen に脱糖する。 x => mm.apply(x) . に深い意味があるのなら andThen というのは、まだ理解していないのです。

どのように解決するのですか?

andThen は単なる関数合成です。ある関数が与えられると f

val f: String => Int = s => s.length

andThen を適用する新しい関数を作成します。 f に続いて、引数の関数

val g: Int => Int = i => i * 2

val h = f.andThen(g)

h(x)g(f(x))