Scalaでの規約操作reduceとfold関数
979 ワード
規約操作は、コンテナの要素を2つの演算を行い、その「規約」を1つの値にします.
一般的な規約方法はreduceとfoldであり、2つの方法の唯一の違いは、reduceは容器の2つの要素から規約を開始し、foldは提供された初期値から規約を開始することである.
同様に、無秩序コンテナの場合、foldメソッドは、規則時の遍歴順序を保証しません.順序を保証するには、foldLeftおよびfoldRightを使用します.ここで、匿名関数パラメータの定義は、reduceLeftおよびreduceRightと全く同じです.
reduce
最も一般的な規約方法はreduce方法であり、パラメータとして2元関数fを受け入れ、まずfを2つの要素に作用させ、1つの値を返し、その後、fを前の戻り値と容器の次の要素に作用させ、1つの値を返します.このようにして、最後の容器のすべての値は1つの値に規約されます.
出力結果
fold
reduce法と非常に類似した方法の1つはfold法である.fold法は二重パラメータリストの関数であり,第一パラメータリストは規則の初期値を受け入れ,第二パラメータリストはreduceと同様の二元関数パラメータを受け入れる.
出力結果
一般的な規約方法は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