次の2つの高次関数は同じ結果をもたらしますが、私はこの2つの違いを理解することができません。実際、私は1)を理解していない。関数はどのようにして()
の2つのセットを持つことができますか?これら2つの上位関数はどのように異なっていますか?
1)
def sum(f: Int => Int) (a: Int, b: Int) = {
def loop(a: Int, acc: Int) : Int =
if (a > b) acc
else loop (a + 1, f(a) + acc)
loop (a, 0)
}
2)
def sum(f: Int => Int, a: Int, b: Int) = {
def loop(a: Int, acc: Int) : Int =
if (a > b) acc
else loop (a + 1, f(a) + acc)
loop (a, 0)
}
スカラ関数は、( 'sum'の最初の定義のように)複数のパラメータリストを持つことができます。 http://docs.scala-lang.org/tutorials/tour/currying.htmlを参照してください。 – Jubobs
http://stackoverflow.com/questions/36314/what-is-curryingを参照してください。 –