Это функция , называемая sum
. Она принимает в качестве параметра one функцию от Int
до Int
и возвращает функцию, которая при вызове с парой Int
s возвращает другую Int
.
Фактический результат зависит от реализации, но мы могли бы, например, определить его как:
def sum(f: Int => Int): (Int, Int) => Int = {
def sumf(a: Int, b: Int): Int = {
f(a) + f(b)
}
sumf
}
Или просто:
def sum(f: Int => Int): (Int, Int) => Int = {
(a: Int, b: Int) => f(a) + f(b)
}
В этом случае вы можете назвать это так, например:
def f(a: Int): Int = a * a
def g(a: Int, b: Int): Int = sum(f)(a, b)
val x: Int = g(3, 4) // x = 25