2017-08-17 54 views
-1

我想遍历学生叠代自定义对象阶的列表

EDITED

case class Group(grp:Person*){ 
     val myList=grp.toList 
    } 

    trait Person 
    case class Student(firstName: String, lastName: String) extends Person 
    case class Emp(empName: String, empLastName: String) extends Person 
    case class grp(group: List[Group]) 
    grp(List(Group(Student("a","b"),Emp("c","d")), 
     Group(Student("e","f"),Emp("g","h")))) 
  1. 我想打印的名字和学生和员工的姓氏列表

  2. 任何其他替代方案来实现这..可能是使用元组。

+0

你试过编译你的代码吗? – Dima

+0

对不起。我在编辑它 – coder25

+0

@Dima编辑代码 – coder25

回答

0

你应该让firstNamelastName成员Person的:

trait Person { 
    def firstName: String 
    def lastName: String 
} 

,改变它的Emp定义字段名称匹配:

case class Emp(firstName: String, lastName: String) extends Person 

现在,你可以执行如下操作:

val groups = grp(...) 
groups.flatMap(_.myList).foreach { p => 
    println(s"${p.firstName} ${p.lastName}") 
} 
+0

在实际的使用情况下,有很多情况下,不同类型paranters的,我想覆盖到的字符串来获取值出它 – coder25

+0

如果妳也使用元组以外的任何暗示任何其他方式更好的方法周到的团队有不同的参与者和成员。我正在创建一个固定消息重复组实际 – coder25

+0

如果你还建议使用元组的其他任何方式其他任何更好的方法考虑有不同的paranters以及成员的方法。我正在创建一个修复消息重复组,实际上 – coder25

0
grp(List(Group(Student("a","b"),Emp("c","d")), 
    Group(Student("e","f"),Emp("g","h")))).group.map(a => a.myList.map(b => b match { 
    case Student(x,y) => println(x+" "+y); 
    case Emp(x,y) => println(x+" "+y); 
    }))