如何按照澄清的顺序加入一个班级的成员?

时间:2015-05-08 06:24:03

标签: scala

我有一个案例类:

case class C(a:String, b:String, c:Int, d:Long, e:String ... )

我想加入班级成员

val c = new C("a", "b", 1,  1L, "e" ... )

val joined_str = c.a + c.b + c.c + c.d + c.e ...  // so many members...

是否有一项功能可以轻松地将成员加入到一起? 我不想写这么多会员名,因为会员人数太多而且会员名称太长......

3 个答案:

答案 0 :(得分:2)

Scala案例类"使用综合生成的方法实现Product"。因此,您可以使用提供的productIterator方法迭代案例类的成员,然后在其上调用mkString

scala> C("a","b",0,1l,"e").productIterator.mkString
res7: String = ab01e

答案 1 :(得分:1)

使用productIterator

  case class C(a: String, b: String, c: Int, d: Long, e: String)
  val c = C("a", "b", 1, 1L, "e")
  c.productIterator.mkString
  //res0: String = ab11e

答案 2 :(得分:1)

简短的回答,

val c = C("a", "b", 1,  1L, "e")
c.productIterator.mkString(",")
res0: String = a,b,1,1,e

案例类配备了一个产品迭代器,用于迭代字段。

注意它丢失类型信息;例如,

c.productIterator.toArray
res1: Array[Any] = Array(a, b, 1, 1, e)

成为Any的数组。