我正在阅读包含许多列的CSV文件,并将每一行转换为一个对象。它是这样的:
val sighting = Sighting(
cols(0).toInt,
cols(1),
cols(2),
cols(3),
cols(4),
cols(5).toInt,
cols(6),
cols(7),
cols(8),
cols(9).toDouble
cols(10),
cols(11),
cols(12))
这对我来说非常难看。缺少命名参数(这将是一项改进,被授予),我能做些什么来让它看起来不那么丑陋吗?
答案 0 :(得分:2)
这个怎么样:
val sighting = cols match { case Seq(c0, c1, c2, ..., c12) =>
Sighting(c0.toInt, c1, c2, ...)
}
答案 1 :(得分:0)
您可以将丑陋转移到接受Array
的构造函数中。我知道这不会降低丑陋程度,但仍然是一个更好的处理方式。
object Sightings{
def apply(array: Array[String]): Sightings = new Sightings(array(0), array(1), ...)
}
然后你可以使用:
val strings: Array[String] = line.split(",") //split the line and convert it into array of strings
val sightings: Sightings = Sightings(strings) //create Sighting from the array