使用公共属性和函数重构案例类

时间:2016-03-27 15:54:51

标签: scala

一些案例类共享一些常见属性,一个函数使用这些公共属性。我想重构它们以便

  1. 可以使用复制功能,并且可以使用一个或多个属性 用功能改变
  2. 这些常用功能只需要定义一次
  3. 我试图在这些案例类的顶部创建一个特征。这种方法解决了第二个问题,但不是第一个问题。

    有什么建议吗?

1 个答案:

答案 0 :(得分:1)

最接近你想要的,不使用反射,可能是这样的:

 trait Foo[T <: Foo[_]] {
   def foo: String
   def copyMe(foo: String): T
 }

 case class Bar(foo: String, bar: String) extends Foo[Bar] {
    def copyMe(foo: String) = copy(foo=foo)
 }