【发布时间】:2013-11-26 14:48:50
【问题描述】:
我正在尝试同时学习 Scala 和 Play Framework。 Scala 在我看来有很多非常酷的想法,但我的挫败感之一是试图理解方法/函数/lambdas/匿名函数/等的所有不同语法。
所以我的主应用程序控制器是这样的:
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
这告诉我我有一个单例Application,它有一个方法index,它返回什么类型?我期待index 的定义更像:
def index(req: Request) : Result = { ... }
查看 Play Framework 的文档,似乎 Action 是一个特征,它将请求转换为结果,因为我很难理解这行在说什么:
def index = Action { ... }
我来自 Java 背景,所以我不知道这是在说什么? (这句话感觉就像是在说“method index = [some interface Action]”,这对我来说没有意义;似乎一些美好的事情正在发生,但它对我来说很神奇,而且我对我的代码中的魔法感到不安;))
【问题讨论】:
-
我试图理解这一点的另一个打击:
def index = Action { ... }类似于说index = new Action { _interface implementation here_ }(例如,Java 中的匿名接口实例化)? -
我分享你在语法上不知所措的感觉。其他一切都是泥泞的时候有几个工具:使用调试器单步执行,以及 -Xprint:all 使用编译器。
标签: function scala methods lambda traits