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