我在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抱怨“递归方法解析需要结果类型”
答案 0 :(得分:1)
scala编译器通常根据其实现推断出方法的返回类型,但它无法推断递归方法的类型。
消息recursive method parse needs result type
是由于这个缺点。您的def parse(content: String)
通过致电parse(content)
进行递归。这使得该方法具有递归性(无限期,但我假设您计划稍后更改它)。为了编译它,您需要明确说明返回类型,例如: def parse(content: String): Unit
。
我将进一步猜测并说有parse
方法从json4s
或JsonMethods
导入。由于它具有相同的方法签名,因此被您自己的parse
方法遮蔽。如果您确实想要致电JsonMethods.parse
,那么您需要实际说JsonMethods.parse
来澄清歧义。