【问题标题】:Json4S Recursive method parse needs a result typeJson4S 递归方法解析需要一个结果类型
【发布时间】:2016-02-06 02:38:29
【问题描述】:

我在我的 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 抱怨“递归方法解析需要结果类型”

【问题讨论】:

    标签: scala json4s


    【解决方案1】:

    scala 编译器通常根据方法的实现来推断方法的返回类型,但在推断 recursive 方法的类型时会遇到麻烦。

    消息recursive method parse needs result type就是由于这个缺点。您的 def parse(content: String) 通过调用 parse(content) 来递归。这使得该方法递归(无限递归,但我假设您计划稍后更改它)。为了编译它,您需要显式声明返回类型,例如def parse(content: String): Unit.

    我将进一步猜测并说有一个从json4sJsonMethods 导入的parse 方法。这被您自己的 parse 方法所掩盖,因为它具有相同的方法签名。如果你真的想打电话给JsonMethods.parse,那么你需要说JsonMethods.parse来澄清歧义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多