I have a nested list structure and I want to iterate through the list and print the custom string version of it
trait Value{
def myString:String
}
case class Student(value: String) extends Value{
override def myString: String = s"Student =$value"
}
case class Employee(value: Double) extends Value{
override def myString: String = s"Employee =$value"
}
case class Department(value: Int) extends Value{
override def myString: String = s"Dept =$value"
}
case class Grp (elements: List[Value] = Nil) extends Value {
def add (value: Value): Grp = Grp(this.elements ++ List(value))
override def myString: String = ""
}
val group= Grp()
.add(Student("abc"))
.add(Employee(100.20))
.add( Department(10))
.add( Grp().add( Student("xyz"))) // nested group`e
.add( Grp().add( Employee("def")))
I want to have the string representation of the group
.How to iterate through the group
to call myString
method
Updated
Output
Student = abc
Employee = 100.20
Department =10
Student =xyz
Employee= def