【问题标题】:Converting List of lists to Stream - Functional Programming将列表转换为流 - 函数式编程
【发布时间】:2013-11-04 19:58:26
【问题描述】:

我正在使用 Scala 将列表列表转换为自定义对象“点”列表

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
  }   

我无法弄清楚问题到底出在哪里?

【问题讨论】:

  • 为什么不使用元组作为内部结构?
  • 我不认为我需要它,因为它们都是一样的。我需要知道如何每次都在列表中推送一个新的点对象

标签: scala functional-programming recursive-datastructures


【解决方案1】:
 def listToPoint(l:List[List[String]]):List[Point] = 
     l.collect({case x::y::Nil => new Point(x.toInt,y.toInt)})

但你真的不应该使用 List[String] 来表示基本上是 (Int,Int) ...

【讨论】:

    【解决方案2】:

    丑得要命且未经测试,但它应该可以工作(请考虑使您的结构不可变):

    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))
    }
    

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 2019-10-21
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多