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化関数とは、複数のパラメータリストがあり、各パラメータリストに1つのパラメータしか含まれていない関数を指します.
  @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