简单表达式的错误非法开始

Error illegal start of simple expression

我遇到了这个错误:

error: illegal start of simple expression def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield (val a = line.split(",")) (a[0],a[4].toDouble)

对于这行代码:

def process_alcs(lines: List[String]) : List[(String, Double)] = 
  for (line <- lines) yield (val a = line.split(",")) (a[0],a[4].toDouble)

起初我以为是括号不匹配,但我检查了 100 次

尝试

 def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield {
   val a = line.split(",")
   (a(0),a(4).toDouble)
 }

基本上,您是在对产量进行多线评估。因此,您必须使用 { 而不是 ( 封装其中的代码。此外,这两个语句应该封装在一个 {} 对中,因为它们会建立你想要的结果。

此外,scala 中的数组成员是使用 () 而不是 [] 访问的。所以,你想使用 a(0) 而不是 a[0]

另外,这似乎与今天有人问的另一个问题有关,在这种情况下,他想将第 4 列中的值转换为两倍。要访问第 4 列,您需要使用 a(3).

在这种情况下,代码变为,

def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield {
  val a = line.split(",")
  (a(0), a(3).toDouble)
}

希望这对您有所帮助。如果您还有其他问题,请告诉我:)

编辑:要转换为地图,请尝试,

def process_as_map(lines: List[String]) : Map[String, Double] = {
  val results: List[(String, Double)] = for (line <- lines) yield {
    val a = line.split(",")
    (a(0), a(3).toDouble)
  }
  results.toMap
}

请参阅评论以了解我为何根据您的代码进行如此调整