我是Scala的新手,我在阅读《Scala实战》一书时遇到了问题。
我使用IntelliJ进行开发,但我也尝试过使用脚本(REPL)。然而,无论采用哪种工具,Scala编译器都提示同样的错误。(按照书中建议,我使用的是Scala 2.10版本)
以下是我的代码:
def parseArgs(args: Array[String]): Map[String, List[String]] = {
val command = args.head
val params = parseArgs(args)
val url = args.last
def nameValuePair(paramName: String) = {
def values(commaSeparatedValues: String) = commaSeparatedValues.split(",").toList
// x => x + 2
val index = args.indexOf(_ == paramName)
(paramName, if(index == -1) Nil else values(args(index + 1)))
}
Map(nameValuePair("-d"), nameValuePair("-h"))
}
我收到的消息是:
C:\scala\projects\scripts\restclientscript.scala:12: error: missing parameter type for expanded function ((x$1) => x$1.$eq$eq(paramName))
val index = args.indexOf(_ == paramName)
^
one error found
这正如书中所示,但我不知道如何使其工作。
此外,书中的indexOf方法实际上是findIndexOf。但该方法不存在,编译器告诉我(以及文档:http://www.scala-lang.org/api/2.10.3/index.html#scala.Array)。
最后,IntelliJ不会接受indexOf()方法内的==(被标为红色,但可以编译)。
任何帮助都将不胜感激! :)
val index = args.indexWhere(_ == paramName)
已经成功了!我也想给你点赞,但我需要15个声望值。非常抱歉 :) - thomas77