【问题标题】:Higher Order Function with `Val` and `Def`具有 `Val` 和 `Def` 的高阶函数
【发布时间】:2017-08-15 18:08:08
【问题描述】:

我是 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 会被调用吗?

【问题讨论】:

    标签: scala higher-order-functions


    【解决方案1】:

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

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

    【讨论】:

    • 是的,除了 getFilterList 是一种方法,而不是一个函数(但也许这有点不必要的头发分裂)。
    • @jwvh 函数和方法到底有什么区别?
    • @AkashSethi,一个非常混乱的话题。详细讨论herehere
    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2014-04-03
    • 2020-04-04
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多