用foldl
看代码很难理解它的语法,例如:
def lstToMap(lst:List[(String,Int)], map: Map[String, Int] ):Map[String, Int] = {
(map /: lst) (addToMap)
}
/:
是中缀运算符吗? (map/: lst)
是什么意思,部分应用?为什么我不能这样打电话:
`/: map lst addToMap`
最佳答案
以 :
字符结尾的方法名称可以用在它们绑定(bind)到的实例的左侧(即,它们关联到右侧)。在这种情况下,/:
是一个 method on List
.根据 Scaladoc:
Note: /: is alternate syntax for foldLeft; z /: xs is the same as xs foldLeft z.
您所写内容的替代方法是:
lst./:(map)(addToMap)
编辑:和 foldLeft 的另一种选择:
lst.foldLeft(map)(addToMap)
关于Scala:运算符 foldl 是中缀吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604663/