我遇到了andThen,但没有正确理解它。

为了进一步了解它,我阅读了Function1.andThen文档

def andThen[A](g: (R) ⇒ A): (T1) ⇒ A
mmMultiMap实例。
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))

注意-DSLs in Action中的代码
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))

关于scala - 了解 `andThen`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20292439/

10-11 14:27