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. 函數返回一個函數。 能夠當作函數返回一個函數指針。
相關文章
相關標籤/搜索