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