【发布时间】:2017-09-11 13:15:07
【问题描述】:
我正在尝试更好地理解 Scala 语法和编写代码的不同方法,有些情况对我来说不是很清楚,例如 lambda 或函数定义/调用的工作原理。
例如,具有相同结果的相同函数可以通过多种方式声明:
def foo: (Double,Double) => Double = (x,y) => x*y
//> foo: => (Double#1671, Double#1671) => Double#1671
def foo = (x: Double,y : Double) => x*y
//> foo: => (Double#1671, Double#1671) => Double#1671
def foo(x: Double, y: Double) = {(x * y) }
//> foo: (x#722938: Double#1671, y#722939: Double#1671)Double#1671
所有版本都可以以相同的方式调用并产生相同的结果: println( foo1(4,2) ) // 8.0
我想用这个 foo 函数作为一个 reducer 来操作一个列表。
应该如何实现使用list(1,2,3,4,...) 和foo 等列表作为reducer 的reduce 函数? //this case would output 24
实际上可能的用途和利弊是什么?
【问题讨论】:
-
已经有很多关于这个的问题了。
标签: scala function lambda definition