是否可以一般替换案例类中的参数?更具体地说,假设我想要一个接收“查找”案例类和“替换”案例类(如语法规则的左侧和右侧)以及目标案例类的替代函数,该函数将返回一个用替换案例类替换了查找案例类的参数的新案例类?该函数也可以简单地采用一个案例类(产品?)和一个应用于案例类的所有参数/产品的函数。
显然,给定一个特定的案例类,我可以使用 unapply 和 apply - 但是一般(给定任何案例类)编写这种函数的最佳/最简单/等方法是什么?
我想知道是否有使用 Scala 2.10 反射功能或来自 shapeless 的 Iso.hlist 的好的解决方案。
例如,我真正想做的是,给定如下类......
class Op[T]
case class From(x:Op[Int]) extends Op[Int]
case class To(x:Op[Int]) extends Op[Int]
case class Target(a:Op[Int], b:Op[Int]) extends ...
// and lots of other similar case classes
... 有一个函数可以接受任意案例类并返回它的副本,并将 From 类型的任何元素替换为 To 类型的实例。