在下面的代码中,我尝试创建一个不带参数的函数值并打印消息
trait Base {
var onTrade = () => println("nothing")
def run {
onTrade
}
}
在下面的子类中,我尝试重新分配函数值以打印不同的消息
class BaseImpl extends Base {
onTrade = () => {
val price = 5
println("trade price: " + price)
}
run
}
当我运行BaseImpl时,根本没有任何内容打印到控制台。我期待
trade price: 5
为什么我的代码会失败?
答案 0 :(得分:8)
onTrade
是一个函数,所以你需要使用括号来调用它:
def run {
onTrade()
}
方法run
最有可能让您感到困惑 - 即使没有括号也可以调用它。方法和功能之间有区别。你可以看看这个问题,它可能会有所帮助:
What is the rule for parenthesis in Scala method invocation?