如何编写单行scala代码?

Coo*_*sam 1 scala

我是Scala的新手,我写了一段代码,将员工档案(empId,姓名,年龄,薪水,部门)作为输入,打印出部门和部门的总薪水.

这是一个新手代码.如何缩短代码?请帮忙

码:

object UsingCollectionMaps {
  def main(a: Array[String]) {
    val filename = "Employee.txt"
    var map = collection.mutable.Map[String,Long]()
    var sal: Long = 0
    for (line <- Source.fromFile(filename).getLines()) {
      val fields = line.split(",")
      if (map.contains(fields(4))) {
        map.put(fields(4), (map(fields(4)) + fields(3).toLong))
      } else {
        map.put(fields(4), fields(3).toLong)
      }
    }
    println(map)
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 8

我会尽量避免这些可变结构,并且也要理解这个文件,将它正确地分配给一个case类.之后,使用groupBy和sum.

import scala.io.Source

case class Employee(empId: String, name: String, age: Int,
                    salary: Long, department: Int)

Source.fromFile("someFile.txt")
      .getLines()
      .map( _.split(",") )
      .map( l => Employee(l(0), l(1), l(2).toInt,
                          l(3).toLong, l(4).toInt) )
      .toSeq
      .groupBy( _.department )
      .mapValues( _.map( _.salary ).sum )
Run Code Online (Sandbox Code Playgroud)