2016-08-14 18 views
1

我寫了這個例子,是想漂亮:擴展類在一個單獨的對象

class TestMatch(val i: Int) 

object TestMatch extends TestMatch(10){ // <-- Here 
    def apply(i: Int) = new TestMatch(i) 
    def unapply(tm : TestMatch): Option[Int] = Some(tm.i) 
} 

這是怎麼回事?我們延伸TestMatch(10)。我們如何擴展用i = 10創建的實例f測試匹配?這對我來說沒有多大意義。或者TestMatch(val i: Int)定義了組類型而不是單一類型。像在C模板++:

template<int i> 
class TestMatch{ 
    //... 
} 

我由線對象consufed

TestMatch延伸TestMatch(10)

看起來我們延伸TestMatch(10)我認爲是的目的鍵入TestMatch用建構參數i = 10創建。如果我寫了

TestMatch extends TestMatch 

它不會編譯。

+0

你能否澄清你的問題?目前還不清楚你想要解釋什麼。 –

回答

2

您沒有擴展TestMatch類的實例。下面的語法只是將構造函數參數傳遞給基類。

object TestMatch extends TestMatch(10) 
+0

這是什麼意思?所以我們實際上擴展了TestMatch,但也告訴編譯器在創建單例對象時傳遞10。正確? – stella

+0

是的,這是正確的。 – Samar