我在scala中有以下功能:
def addAllCosts(costs: List[Int],discount: Int => Int): Int = {
var sum = 0
costs.foreach(sum += _)
discount(sum)
}
我在http akka路由器中调用这样的函数:
HttpResponse(200, entity= repository.addAllCosts(costs,repository.applyDiscount(23)))
applyDiscount看起来像这样:
def applyDiscount(sum:Int): Int = {
return sum - discount
}
但是,我收到以下错误:
Error:(45, 94) type mismatch;
found : Int
required: Int => Int
不确定如何解决这个问题?谢谢!
答案 0 :(得分:1)
applyDiscount
是一个Int => Int
函数,但是,您将repository.applyDiscount(23)
作为discount
参数的值传递,并且该表达式的类型为{{ 1}}(因为它是将函数应用于值Int
)的结果,而不是预期的类型23
。
不确定值23的来源,但至少应该编译你只需要传递对方法的引用而不应用它:
Int => Int