我有这样的代码
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
}
}
没有错误。上述两个定义之间有区别吗?
答案 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
缺少的正文的错误以及有关预期声明的块{ ... }
的错误。