Scala 通过反射调用具有命名参数的方法

Scala 通过反射调用具有命名参数的方法,scala,Scala,假设我定义以下case类: case class A(x: Int, y: String, s: Double) 我希望能够通过反射动态调用copy方法,以实现以下功能: val a1 = A(1, "hello", 2.3) val a2 = a1.copy(y = "goodbye") // Do this with reflection??? 是否可以通过反射进行复制 谢谢 Des目前Scala的运行时反射库没有提供一种方便的方法来调用带有命名/默认参数的方法。当前API仅允许在用户

假设我定义以下case类:

case class A(x: Int, y: String, s: Double)
我希望能够通过反射动态调用copy方法,以实现以下功能:

val a1 = A(1, "hello", 2.3)
val a2 = a1.copy(y = "goodbye")  // Do this with reflection???
是否可以通过反射进行复制

谢谢
Des

目前Scala的运行时反射库没有提供一种方便的方法来调用带有命名/默认参数的方法。当前API仅允许在用户以声明顺序显式提供所有参数的参数时对方法进行反射调用。请向我们的bug追踪器提交一个问题,我很乐意调查。

我认为问题在于找到其他参数,即反射的默认值。我认为不可能复制(y=“再见”)。虽然
a1.copy(“y”,“再见”)
应该相当简单。但基于宏的解决方案应该是最好的:)