解释为零参数函数VS呼叫在这种comment值,@Ben建议通过名字呼叫相当于由值,其中值是零参数的函数调用。如果我理解正确,打电话值与由名称
def callByName(x: => Int) = {
// some code
}
callByName(something())
相当于
def callByValue(x:() => Int) = {
// same code as above, but all occurrences of x replaced with x()
}
callByValue(()=>something())
(编辑:我固定的签名错误,因为所指出的@MichaelZajac,@LukaJacobowitz:最初,它说callByValue(x: Int)
)
换句话说,整个“呼叫按名称”的概念只是语法糖:但这一切可以使用“按值调用”来实现(有一些额外的按键)。如果属实,则可以非常容易地了解按名称的呼叫;实际上,我在python中使用了这种技术(python具有一流的功能)。
然而,在comments的更深层次,讨论变得更加混乱,我觉得它并不那么简单。
所以有更多的东西实质性“按名字叫”?或者它只是编译器自动创建的零参数函数?