我对Scala相对较新,并且已经在网上浏览了一些教程。我目前正在学习高阶函数,并且遇到了这个例子:
val filter = (predicate: Int => Boolean, xs: List[Int]) => {
for (x <- xs if predicate(x)) yield x
}
该函数甚至可以过滤列表中的值..但我无法确定函数调用的参数。
我还有另外一个问题:
predicate: Int => Boolean
参数在做什么吗?predicate: Int => Boolean => Boolean
? 我对链接模式如何工作以及如何有效地利用其功能感到有点困惑...谢谢
答案 0 :(得分:3)
实际上,该功能甚至不会从列表中过滤掉值。它是一个更通用的函数,它根据您传递给它的谓词函数执行过滤。签名
val filter = (predicate : Int => Boolean, xs: List[Int]) => ...
告诉您filter
是一个函数,它将两个值作为参数:
predicate
本身就是Int
到Boolean
xs
是List
的{{1}} 你可以传入一个函数来检查一个数字是否甚至是你的谓词:
Int