Scala求和例子

2017-3-8来源:ASP.NET技巧人气:1031

def sum(f: Int => Int)(a: Int)(b: Int): Int = { @annotation.tailrec def loop(n: Int, acc: Int): Int = { if (n > b) { PRintln(s"n=${n},acc=${acc}") acc } else { println(s"n=${n},acc=${acc}") loop(n + 1, acc + f(n)) } } loop(a, 0) } sum(x => x)(1)(5) sum(x => x*x)(1)(5) //使用通配符 val sumSqure = sum(x => x * x)_ sumSqure(1)(5)

=>可以理解为映射关系 柯里化和偏应用函数