使用 productiterator 制作字符串
make string using productiterator
我想写入 case class Grp
的字符串表示形式
trait Value
// define these in different files if you want
case class Student(value: String) extends Value
case class Employee(value: Double) extends Value
case class Department(value: Int) extends Value
case class Element(key: String, value: Value)
case class Grp (elements: List[Element] = Nil) extends Value {
def add (key: String, value: Value): Grp = Grp(this.elements ++ List(Element(key, value)))
}
val s= Grp()
.add("2", Student("abc"))
.add("3", Employee(100.20))
.add("4", Department(10))
.add("5", Grp().add("2", Student("xyz"))) // nested group
我想打印以“=”分隔的键值对
print(s.productIterator.mkString(""))
这样做就可以了:
s.elements.map(elem => elem.key.toString + "=" + elem.value.toString).mkString(",")
这将产生如下输出:
2=Student(abc),3=Employee(100.2),4=Department(10),5=Grp(List(Element(2,Student(xyz))))
我想写入 case class Grp
trait Value
// define these in different files if you want
case class Student(value: String) extends Value
case class Employee(value: Double) extends Value
case class Department(value: Int) extends Value
case class Element(key: String, value: Value)
case class Grp (elements: List[Element] = Nil) extends Value {
def add (key: String, value: Value): Grp = Grp(this.elements ++ List(Element(key, value)))
}
val s= Grp()
.add("2", Student("abc"))
.add("3", Employee(100.20))
.add("4", Department(10))
.add("5", Grp().add("2", Student("xyz"))) // nested group
我想打印以“=”分隔的键值对
print(s.productIterator.mkString(""))
这样做就可以了:
s.elements.map(elem => elem.key.toString + "=" + elem.value.toString).mkString(",")
这将产生如下输出:
2=Student(abc),3=Employee(100.2),4=Department(10),5=Grp(List(Element(2,Student(xyz))))