【发布时间】:2016-02-25 11:29:54
【问题描述】:
我找不到如何在 scala 中为案例类实现复制。
我可以检查一下吗?
我虽然 Intellij 可以指出我的实现,但它不想跳转,我不知道为什么:/
【问题讨论】:
-
它是由 scalac 生成的,看起来像这样 stackoverflow.com/a/6637597/5123895 要实际看到它,我认为您需要编译和反编译或在 scalac 中启用某些选项。
我找不到如何在 scala 中为案例类实现复制。
我可以检查一下吗?
我虽然 Intellij 可以指出我的实现,但它不想跳转,我不知道为什么:/
【问题讨论】:
您可以使用 scalac -print ClassName.scala 检查 scala 案例类输出,因为 copy 实际上是编译器生成的方法。
这是一个给定的例子:
case class Test(s: String, i: Int)
这是过滤掉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();
}
【讨论】:
Test("a",3).copy(i=5)
def copy(s: String, i: Int): common.Test = new common.Test(s, i);