【发布时间】:2014-11-19 02:27:11
【问题描述】:
首先,我有这个功能:
def number5()={
println("number 5 starting")
println("number 5 exiting")
5
}
然后:
def giveMeCallByNameParameter(f: =>Int)={
println("starting")
f
println("exiting")
}
当我调用它时:
giveMeCallByNameParameter(number5)
我得到这个结果:
starting
number 5 starting
number 5 exiting
exiting
如果我也有这个功能:
def giveMeAnotherFunction(f: ()=>Int)={
println("starting")
f()
println("exiting")
}
我称之为:
giveMeAnotherFunction(number5)
我得到相同的结果:
starting
number 5 starting
number 5 exiting
exiting
那么,它们有什么不同吗?除了有没有括号的区别?
如果他们没有不同?那我们为什么要按名称调用这个术语呢?
【问题讨论】:
-
注意:这些是方法,不是函数。事实上,按名参数和作为函数的参数的区别之一是函数不能有按名参数,只有方法可以。
标签: scala functional-programming terminology higher-order-functions callbyname