代码之家  ›  专栏  ›  技术社区  ›  Akash Sethi

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

  •  1
  • Akash Sethi  · 技术社区  · 8 年前

    我是新手 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 奥德霍夫 getFilterList 被呼叫?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Ra Ka    8 年前

    A. Higher ordered function 是一个以函数为参数的函数。因此 getFilterList Int => Boolean 作为参数。

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