まあ、あなたは書くことができます
sum(args(0), args(1))
しかし、これを任意のリストの長さで機能させたいと思いますか? fold次に、またはに行きますreduce:
args.reduce(sum) // args must be non empty!
(0 /: args)(sum) // aka args.foldLeft(0)(sum)
これらのメソッドは、リストのペアごとの削減を想定しています。たとえば、 type の要素のリストを typeの単一の要素foldLeft[B](init: B)(fun: (B, A) => B): Bに減らします。この例では、. 初期値から始まります。合計したいので、空のリストの合計はゼロになります。次に、現在のアキュムレータ (実行中の合計) とリストの連続する各要素を使用して関数を呼び出します。ABA = B = Intinit
だからそれは好きです
var result = 0
result = sum(result, 1)
result = sum(result, 4)
...
このreduceメソッドは、リストが空ではないことを前提としており、要素の型が変更されていないことを前提としています (関数は 2 つIntの から にマップする必要がありますInt)。