我很难找到特定的答案,尽管它是一些微不足道的事情。 我想了解Scala中块的工作原理。 我来自于Java / Ruby背景,似乎Scala使用块的方式完全不同。
以下代码来自Play! Framework网站。我想了解Action在语义上是什么。 它是一个接受块的对象或函数,还是两者都不是?
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
如果它是一个函数,也许它只是以下语法糖(在这种情况下,Scala 是如何在后台传递块的呢):
def index = Action({
Ok(views.html.index("Your new application is ready."))
})
还是我不知道的某种 Scala 语法?
有关 Scala 源代码的任何参考资料都将帮助我了解这背后的工作原理。
Action.apply(Ok.apply(views.html.index("Your new application is ready.")))
。如果你查看我提供的URL中的apply()
定义,你会注意到参数类型前面有一个箭头。这只是标记它为“按名称”参数,如上所述。(此外,按名称的语法之所以看起来像没有参数的匿名函数,这不是巧合) - yan