首页 > 解决方案 > Scala将案例类列表转换为另一个案例类列表

问题描述

case class student1(name :String, marks :Long)
 
case class student2(studentName:String, marks:Long)
 
val mylist:List[student1] = List( student1("a",100) , student1("b",200))

我怎样才能以比这更优雅的方式转换mylist成?List[student2]

val res: List[student2] = mylist.map(s => student2(s.name,s.marks))

标签: scalacase-class

解决方案


您可以添加一个辅助构造函数。

case class student2(studentName:String, marks:Long) {
  def this(s:student1) = this(s.name, s.marks)
}

. . .

val res: List[student2] = mylist.map(new student2(_))

或者你可以只做一个模式匹配,但是你真的应该把你的类名大写。

val res: List[Student2] =
  mylist.map{case Student1(n,m) => Student2(n,m)}

推荐阅读