【发布时间】:2016-08-13 05:11:31
【问题描述】:
我想通过名称传递一个函数,在它执行之前做一些事情。考虑以下示例:
class Runner {
def apply(procedure: => Unit) = {
println("running procedure")
procedure
}
}
new Runner()(println("procedure!")) // #1
new Runner(){println("procedure!")} // #2
调用#1 和#2 之间的唯一区别在于花括号。虽然第一次调用输出
running procedure
procedure!
不出所料,只在第二次通话中
procedure!
被打印出来了。
似乎在使用花括号时,过程不是按名称传递而是执行。 为什么在这个例子中大括号和圆括号不能互换?
【问题讨论】:
标签: scala pass-by-name