【发布时间】:2016-12-30 20:41:30
【问题描述】:
在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 的更下方,讨论变得更加混乱,我觉得事情并不那么简单。
那么“点名”还有什么更实质的东西吗?还是只是编译器自动创建零参数函数?
【问题讨论】:
标签: scala