我正在使用Scala将列表列表转换为自定义对象列表“Point”
class Point(val x: Int, val y: Int) {
var cX: Int = x
var cY: Int = y
}
我应该使用Foreach还是应该在这种情况下使用Map或foreach
def list_To_Point(_listOfPoints :List[List[String]]) : List[Point] = {
var elem =
lazy val _list: List[Point] = _listOfPoints.map(p=> new Point(p[0],p[1])
_list
}
我无法弄清问题究竟在哪里?
答案 0 :(得分:4)
def listToPoint(l:List[List[String]]):List[Point] =
l.collect({case x::y::Nil => new Point(x.toInt,y.toInt)})
但你真的不应该使用List [String]来表示基本上(Int,Int)
...
答案 1 :(得分:1)
丑陋的地狱和未经测试但它应该工作(请考虑使你的结构不可变):
case class Point(x:Int,y:Int)
object Point {
def listToPoint(listOfPoints:List[List[String]]):List[Point] =
listOfPoints.map(p => new Point(p(0).toInt,p(1).toInt))
}