【问题标题】:scala play framework define action named 'new'scala play框架定义名为'new'的动作
【发布时间】:2015-12-05 16:55:42
【问题描述】:

是否可以定义函数/Action 名称new

例如:

def new = Action { ... }

更准确地说,如果我想创建一个名为 new 的路由,我该如何使用 Scala 和 Play 框架来实现这一点?

附言

我想这是不可能的,因为new 是一个关键字。

对于创建路由new,映射到名称不完全相同但例如_new 的操作就足够了。

不管怎样,我问是因为也许有一种方法可以在 Scala 中定义一个名为 new 的函数。

【问题讨论】:

  • 你可以用反引号包围new,但我不确定路由编译器是否支持这种语法。
  • 你是对的。不幸的是,路由编译器不支持该语法。也许下一个版本。 :)

标签: scala playframework


【解决方案1】:

在 Scala 中,您可以在方法、变量或您喜欢的其他内容周围使用反引号,为它们指定保留关键字的名称。

所以在你的情况下,你可以使用def `new` = ???

【讨论】:

  • 好的,谢谢。但是play框架中的路由语法不接受。
  • 抱歉,我不知道play框架有这个限制。感谢您的提示。
【解决方案2】:

路由名称不需要与动作名称相同,因为new是Scala中的保留字,您不能直接将其用作动作名称,因此将其重命名为:

def newAction = Action { ... }

然后使用如下路线:

GET   /new   controllers.Application.newAction

一般来说,在方法、视图、变量等名称中使用受限关键字是个坏主意,它喜欢报复,尤其是在工作几个小时后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2019-04-11
    • 2016-08-17
    • 1970-01-01
    • 2012-02-20
    • 2013-05-27
    • 2015-01-20
    相关资源
    最近更新 更多