【问题标题】:Error illegal start of simple expression简单表达式的错误非法开始
【发布时间】:2018-04-30 09:57:41
【问题描述】:

我遇到了这个错误:

错误:简单表达式的非法开始 def process_alcs(lines: List[String]) : List[(String, Double)] = for (line

对于这行代码:

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

我一开始以为是括号不匹配,但我检查了 100 次

【问题讨论】:

    标签: scala list scala-collections scalatest for-comprehension


    【解决方案1】:

    试试

     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
    }
    

    请参阅 cmets 以获得解释,了解我为什么根据您的代码进行调整

    【讨论】:

    • 我认为它有效,非常感谢,但我还有另一个问题。在我的下一个函数中,我尝试转换值以将它们推送到地图中,我正在做: def process_pops(lines: List[String]) : Map[String, Long] = for (line b(1).toLong).toMap } 这不起作用。我这周开始使用 scala,谢谢你的时间
    • 将 .toMap 移到外面可能会有所帮助def process_pops(lines: List[String]): Map[String, Double] = { val results: List[(String, Double)] = for (line &lt;- lines) yield { val a = line.split(",") (a(0), a(3).toDouble) } results.toMap } 当您在构建的每个单独的元组上调用 toMap 时,您正在将每一行转换为一个映射(带有单个条目)。因此,您将得到一个List[Map[String, Double]]。相反,如果您切换到首先构建整个 List[(String, Double)] 然后调用 toMap 它会按您的预期工作
    • 没问题。祝你好运。 Scala 可以有一个艰难的初始曲线。不过,一旦你克服了这一点,它就会非常有益。
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多