Json4S 递归方法解析需要结果类型

Json4S Recursive method parse needs a result type

我在我的 scala 程序中使用 json4s 库。

我的build.sbt长得像

libraryDependencies ++= Seq(
  "org.json4s" % "json4s-native_2.11" % "3.3.0"
)

在我的代码中,我有一个函数

import org.json4s._
import org.json4s.native.JsonMethods._
import org.json4s.JValue
class Foo {
    def parse(content: String) = {
      val json  = parse(content)
    }
}

但是 IDE 抱怨 "Recursive method parse needs result type"

Scala 编译器通常会根据它们的实现来推断 return 类型的方法,但在推断 递归 方法的类型时遇到问题。

留言recursive method parse needs result type就是因为这个缺点。您的 def parse(content: String) 通过调用 parse(content) 进行递归。这使得该方法递归(无限递归,但我假设您打算稍后更改它)。为了使其能够编译,您需要明确声明 return 类型,例如def parse(content: String): Unit.

我要进一步猜测并说有一个从 json4sJsonMethods 导入的 parse 方法。由于它具有相同的方法签名,因此它被您自己的 parse 方法遮蔽了。如果你真的想调用 JsonMethods.parse,那么你需要实际说 JsonMethods.parse 来澄清歧义。