Scala中的偏應用函數與Curry函數

偏應用函數

有時候一個函數在特殊應用場景下部分參數可能會始終取相同的值,爲了避免每次都提供這些相同的值,我們可以用該函數來定義一個新的函數。

若保留部分參數,則使用 _:參數類型 代表;注意參數類型必須標記;
若保留全部參數,則使用 函數名 _ 進行函數賦值,注意函數名後面有空格。

  @Test
  def testAppFunc(): Unit = {
    /**
     * 測試偏應用函數
     */
    def sum(a: Int, b: Int, c: Int): Int = {
      a + b + c
    }
    println(sum(1, 2, 3))

    // 保留部分參數
    val appFunc = sum(1, _: Int, _: Int)
    println(appFunc(1, 2))

    // 保留全部參數
    val appFunc1 = sum _
    println(appFunc1(1, 2, 3))

  }

輸出結果

6
4
6

Curry化函數

Curry化的函數是指那種帶有多個參數列表且每個參數列表只包含一個參數的函數。

  @Test
  def testCurry(): Unit ={

    def multi(x:Int)(y:Int): Int ={
      x*y
    }
    println(multi(3)(8))

    // 保留部分參數
    val curryFuc=multi(3)_
    println(curryFuc(8))

    // 保留全部參數
    val curryFuc1=multi _
    println(curryFuc1(3)(8))
  }

輸出結果

24
24
24
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章