我一直在按照游戏中的说明进行操作! Framework Essentials一书,有时我看到控制器中的操作定义为 def ,有时还带有 val
我知道def会在调用时重新评估表达式,而val会立即评估表达式,但在控制器操作的上下文中,是否存在差异?
以下是示例代码:
object Items extends Controller {
val list = Action { implicit request =>
...
}
val create = Action { implicit request =>
...
}
def details(id: Long) = Action { implicit request =>
...
}
def update(id: Long) = Action { implicit request =>
...
}
}
答案 0 :(得分:0)
正如您所说,def
将在每次调用时重新评估表达式,而val
对象在实例化时将会计算Items
。
这意味着根据def
定义的控制器操作将更慢,因为每次调用时,控制器都需要实例化Action
,传递你定义的匿名函数,等等。
如果表达式不需要任何抽象,那么使用val
而不是def
总是更高效。