[英]Scala: def vs val in Play2
我一直在按照游戏中的说明进行操作! 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 =>
...
}
}
正如您所说, def
将在每次调用时重新评估表达式,而val
将在实例化Items
对象时进行评估。
这样做的含义是,根据def
定义的控制器动作每次调用时都会变慢 ,控制器需要实例化一个Action
,将它传递给你定义的匿名函数,等等。
如果表达式不需要任何抽象,那么使用val
而不是def
将始终更def
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.