scala-ide错误只有类可以声明但未定义的成员

时间:2014-05-03 22:09:57

标签: scala

我有这样的代码

object API {

    val apiBaseUrl = "https://api.com/2/"

    def getUserDetails(id: String, pass: String): Map[String, String] {
        val apiRequestUrl = apiBaseUrl + "?id=" + id + "&pass=" + pass
    }
}

对于以only classes can have declared but undefined members开头的行和从def开始的行的错误only declarations allowed here,这会给出错误val apiRequestUrl。但是当我将上面的代码改为(只是在方法签名后加上等号)

object API {

    val apiBaseUrl = "https://api.com/2/"

    def getUserDetails(id: String, pass: String): Map[String, String] = {
        val apiRequestUrl = apiBaseUrl + "?id=" + id + "&pass=" + pass
    }
}

没有错误。上述两个定义之间有区别吗?

1 个答案:

答案 0 :(得分:5)

  

上述两个定义之间是否存在差异?

是。在Scala中,您必须对返回值的方法体使用等号。所以你的第二个代码片段更正确。

第一个代码片段就是这样解析的,我相信:

object API {
    val apiBaseUrl = "https://api.com/2/"

    def getUserDetails(id: String, pass: String): Map[String, String]

    {
      val apiRequestUrl = apiBaseUrl + "?id=" + id + "&pass=" + pass
    }
}

这解释了有关getUserDetails缺少的正文的错误以及有关预期声明的块{ ... }的错误。