Scalastyle“;公共方法必须具有显式类型;游戏内框架

Scalastyle“;公共方法必须具有显式类型;游戏内框架,scala,playframework,playframework-2.0,scalastyle,Scala,Playframework,Playframework 2.0,Scalastyle,我们已经开始在我的工作中试验Scala和Play框架。首先设置我们的自动linting和测试框架,并部署Scalastyle来处理前者 这是非常有用的,除了我们得到这个特定的lint错误,我们发现很难以一种好的方式解决它。一个简单的例子是: def helloWorld = Action { req => Ok("Hello World!") } 当然,虽然通常情况下它可能要复杂得多(以至于很难弄清楚实际的类型) 在任何一种情况下,这都会导致Scalastyl

我们已经开始在我的工作中试验Scala和Play框架。首先设置我们的自动linting和测试框架,并部署Scalastyle来处理前者

这是非常有用的,除了我们得到这个特定的lint错误,我们发现很难以一种好的方式解决它。一个简单的例子是:

  def helloWorld = Action {
    req =>
      Ok("Hello World!")
  }
当然,虽然通常情况下它可能要复杂得多(以至于很难弄清楚实际的类型)

在任何一种情况下,这都会导致Scalastyle中的“Public方法必须具有显式类型”错误

不幸的是,在这里设置预期的显式类型似乎通常会导致语法错误

有什么好的解决办法吗?还是我们只需要把这张支票交给播放项目

有什么好的解决办法吗?还是我们只需要把这张支票交给播放项目

我建议您为您的项目完全关闭
org.scalastyle.scalariform.PublicMethodsHaveTypeChecker
规则,或者将您的控制器标记为此规则忽略(您将找到有关如何执行此操作的信息)

最后,这项检查对编写库的人更有好处(因为它有助于更明确地说明api one提供的内容)。我发现,当你在处理“真正”的项目时,像这样检查只会添加一些样板文件,阻止你利用类型推断。


我希望这有帮助。到设置->编辑器->Scala->类型注释。将公共值和方法的值更改为“添加”,而不是“添加并检查”。然后它将不再显示该警告

我找到了一种更好的方法来删除“Public方法必须具有显式类型”消息,而不必关闭它

定义这些方法时,可以设置body[type]和[implicit][type];例如,作为操作[JsValue]和隐式RequestHeader

代码示例:

def helloWorld:Action[JsValue] = Action { 
    implicit req: RequestHeader =>
      Ok("Hello World!")
  }


希望有更好的方法,但是//scalastyle:是的。
 def helloWorld:Action[AnyContent] = Action { 
    implicit req: RequestHeader =>
      Ok("Hello World!")
  }