scala 高阶函数学习

什么是高阶函数

高阶函数(Higher-Order Function)就是操作其他函数的函数。 Scala 中允许使用高阶函数, 高阶函数可以使用其他函数作为参数,或者使用函数作为输出结果。

demo

object HelloWorld {

  def main(args: Array[String]): Unit = {
   /**
      * 这儿的sumAB 是一个函数对象,可以理解成C语言中的函数指针,指向下面定义的“sumAB”这个函数类型
      * 吧一个函数对象做为参数,传递给execute函数
      */
    execute(sumAB, 2)
    
    /**
      *returnFunc() 返回一个函数,后面接圆括号表示调用返回的函数
      */
    println(returnFunc()(3,4))       
  }

 /**
    * @param t 函数对象。t函数对象接受2个Int的参数,返回值是Int
    *     可以理解成C语言中的函数指针,接受一个指针,该指针是指向 接受两个Int类型的参数返回值是Int的函数
    * @param b Int类型参数
    * @return
    */
  def execute(t:(Int,Int) => Int, b: Int) = {
    println("在 execute方法内")
    println("参数: " + t(b,b))
    t(b,b)
  }

  def sumAB(a: Int, b:Int): Int = {
    println("a+b=" + a+b)
    a+b
  }

  /**
    * 
    * @return 返回函数,可以理解成C语言中的指针函数。该函数返回一个指针,指针(函数指针)。
    *    返回的该指针指向 接受2个Int参数,返回Int值的函数
    */
  def returnFunc():(Int,Int)=>Int = {
    def sumCD(c:Int,d:Int):Int = {
      c+d
    }
    sumCD
  }

}

总结

  1. 一个函数参数接收另一函数作为参数。可以看成一个函数的参数接收一个函数指针。
  2. 函数返回一个函数。 可以看成函数返回一个函数指针。

猜你喜欢

转载自my.oschina.net/u/1396185/blog/1786935