函数式编程经常要用到高阶函数,scala可以简写返回值类型是函数的函数,简写的函数就叫currying函数
- 疑问一:为什么需要将多个参数的函数拆成多个函数呢
- 求和∑baf(a)
def sum(f: Int => Int, a: Int, b: Int): Int =
if (a > b) 0
else f(a) + sum(f, a + 1, b)
def sum(f: Int => Int)(a: Int, b: Int): Int =
if (a > b) 0 else f(a) + sum(f)(a + 1, b)
// 参数f和a、b一般是依据上下文确定的,比如确定了f,就可以sum(f),a、b参数可以通过遍历传递,不然使用一个函数多个参数的情况会很大的重复代码