具有“Val”和“Def”的高阶函数

时间:2017-08-14 04:19:40

标签: scala higher-order-functions

我是Scala的新手,并尝试在功能方法中探索更多内容。 我编写了一个方法并定义了一个这样的变量: -

val list = 1 to 10 toList

def getFilterList(list: List[Int],f:Int => Boolean): List[Int] = {
  list.filter(f)
}

getFilterList(list, x => x %2 ==0)

val oddHOF :Int => Boolean = value => value % 2 == 0

list.filter(oddHOF)

现在,我的问题是,oddHOFgetFilterList是高阶函数,如果不是,那么oddHOFgetFilterList会被调用吗?

1 个答案:

答案 0 :(得分:1)

Higher ordered function 是一个将函数作为参数的函数。因此,getFilterList是一个更高阶函数,因为它将Int => Boolean类型的函数作为参数。

另一方面,oddHOF First class function ,这意味着您可以在函数文字语法中表达函数。例如val oddHOF: Int => Boolean = (value:Int) => value % 2 == 0。这里,函数的类型是Int => Boolean,即它采用Int类型的一个参数并返回boolean值,(value:Int) => value % 2 == 0function literal