2016-02-25 114 views
3

我無法找到如何複製scala案例類實現。斯卡拉案例類複製執行

我能以某種方式檢查嗎?

我的IntelliJ但可以指出我的實現,但它並不想跳,我不知道爲什麼:/

+6

它由scalac產生的,它會是這個樣子的http://計算器.com/a/6637597/5123895要真正看到它,我認爲你需要編譯和反編譯或啓用scalac中的某些選項。 –

回答

2

您可以檢查使用階案例類輸出,作爲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(); 
} 
+0

這是一個有點奇怪的副本$默認$ 1和複製$默認$ 2。我試着調用'Test(「a」,3).copy(i = 5)' – kpbochenek

+0

這就是所謂的:'def copy(s:String,i:Int) :common.Test = new common.Test(s,i);' –