在Scala中的andThen()中键入推断

时间:2015-05-07 13:36:39

标签: scala

我正在尝试了解 andThen 在Scala中的工作原理。

以下是代码:

    def collectNames(fromList: List[Map[String,String]]) = {
      fromList.foldLeft(new StringBuffer)((x,y) => {
          x.append(y("Name")).append(",")
      }).toString
    }

    def getOriginalList = List(Map("Name" -> "NS","Age" -> "50"),Map ("Name" -> "SS", "Age" -> "45"))


    getOriginalList andThen collectNames

编译器发现这令人不愉快。似乎 collectNames 正在获得Map[String,String]而不是List[Map[String,String]]

能够正确编写那些“流动”代码的小片段需要什么?

1 个答案:

答案 0 :(得分:1)

问题是getOriginalList _Function0(即() => R)且没有composeandThen

因此,您无法编译:{{1​​}}

现在,如果可以将getOriginalList _ andThen collectNames _视为部分应用的function1,它将起作用:

getOriginalList

但是在你的情况下,在组成方面,您应该将def getOriginalList(a: Any) = List(Map("Name" -> "NS","Age" -> "50")) val composed = getOriginalList _ andThen collectNames _ 视为getOriginalList并将其用作函数参数:

val