【发布时间】:2014-05-26 14:53:26
【问题描述】:
我对 Scala 中函数的部分应用不是很清楚... 我举个例子:
def myOperation(x: Int)(y: Int): Int = {
val complexVal = complexCalc(x)
println("complexVal calculated")
complexVal + y
}
def complexCalc(x: Int): Int = x * 2
val partial = myOperation(5)_
println("calculate")
println("result(3): " + partial(3))
println("result(1): " + partial(1))
这个输出将是:
calculate
complexVal calculated
result(3): 13
complexVal calculated
result(1): 11
所以complexVal被计算了2次,如果我只想计算一次呢?
对于有 javascript 知识的人来说:
function myOperation(x) {
var complexVal = complexCalc(x)
return function(y){
complexVal + y
}
}
编辑:
那么我之前写的和这个有什么区别:
def myOperation2(x: Int, y: Int): Int = {
val complexVal = complexCalculation(x)
println("complexVal calculated")
complexVal + y
}
val partial = myOperation(5)_
val partial2 = myOperation2(5, _: Int)
【问题讨论】: