scala案例类复制实现

kpb*_*nek 6 scala class case

我无法找到如何在scala中为case类实现副本.

我能以某种方式检查吗?

我虽然Intellij可以指出我实现,但它不想跳,我不明白为什么:/

Yuv*_*kov 4

您可以使用 检查 scala 案例类输出scalac -print ClassName.scala,因为它copy实际上是编译器生成的方法。

这是一个给定的示例:

case class Test(s: String, i: Int)
Run Code Online (Sandbox Code Playgroud)

这是滤除噪声后的输出copy

case class Test extends Object with Product with Serializable {
    private[this] val s: String = _;
    def s(): String = Test.this.s;

    private[this] val i: Int = _;
    def i(): Int = Test.this.i;

    def copy(s: String, i: Int): common.Test = new common.Test(s, i);
    def copy$default$1(): String = Test.this.s();
    def copy$default$2(): Int = Test.this.i();
}
Run Code Online (Sandbox Code Playgroud)

  • @matanster是的,它是编译时生成的。 (2认同)