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