Scalaでの規約操作reduceとfold関数


規約操作は、コンテナの要素を2つの演算を行い、その「規約」を1つの値にします.
一般的な規約方法はreduceとfoldであり、2つの方法の唯一の違いは、reduceは容器の2つの要素から規約を開始し、foldは提供された初期値から規約を開始することである.
同様に、無秩序コンテナの場合、foldメソッドは、規則時の遍歴順序を保証しません.順序を保証するには、foldLeftおよびfoldRightを使用します.ここで、匿名関数パラメータの定義は、reduceLeftおよびreduceRightと全く同じです.
reduce
最も一般的な規約方法はreduce方法であり、パラメータとして2元関数fを受け入れ、まずfを2つの要素に作用させ、1つの値を返し、その後、fを前の戻り値と容器の次の要素に作用させ、1つの値を返します.このようにして、最後の容器のすべての値は1つの値に規約されます.
  @Test
  def testReduce(): Unit ={
    /**
     *   reduce fold
     */
    val list=1 to 10

    val newList=list.reduce(_+_)

    println(newList)
  }

出力結果
55

fold
reduce法と非常に類似した方法の1つはfold法である.fold法は二重パラメータリストの関数であり,第一パラメータリストは規則の初期値を受け入れ,第二パラメータリストはreduceと同様の二元関数パラメータを受け入れる.
  @Test
  def testFold(): Unit ={
    /**
     *   reduce fold
     */
    val list=1 to 10

    val newList=list.fold(100)(_+_)

    println(newList)
  }

出力結果
155