【发布时间】:2016-07-07 02:46:13
【问题描述】:
给定:
def higherOrderCallByName(f: => Int => Int, x: Int): Int = f(x)
def higherOrderCallByValue(f: Int => Int, x: Int): Int = f(x)
在什么情况下对函数参数使用按名称调用是惯用/正确的,即higherOrderCallByName中的f?
【问题讨论】:
-
如果由于某种原因生成函数是一个昂贵的调用?
-
我不认为这有什么区别,因为 scala 函数默认是按名称调用的。将函数作为参数传递并使其按值调用没有任何区别。我已经用一个小演示功能对此进行了测试。如果我错了,请纠正我。
-
@ManjeetKumar scala 函数默认是按名称调用的 你能用一个例子来支持吗?我认为通常它是按价值计算的。请参阅下面的示例。
-
@SudhirSingh :scala 函数默认是按值调用的。这是我的错误,我已经互换了术语。
标签: scala