我是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)
现在,我的问题是,oddHOF
和getFilterList
是高阶函数,如果不是,那么oddHOF
和getFilterList
会被调用吗?
答案 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 == 0
是function literal。