2016-08-14 4 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)

拡張しますconstrucotrパラメーターi = 10で作成したTestMatchと入力します。もし私が書いたら

TestMatch extends TestMatch 

それはコンパイルされませんでした。

+0

あなたの質問を明確にできますか?あなたが何を説明したいのかははっきりしていません。 –

答えて

2

TestMatchクラスのインスタンスを拡張していません。以下の構文は、コンストラクタのパラメータを基本クラスに渡すだけです。

object TestMatch extends TestMatch(10) 
+0

それはどういう意味ですか?実際にはTestMatchを拡張するだけでなく、シングルトンオブジェクトを作成するときにコンパイラに10を渡すよう指示します。正しい? – stella

+0

はい、そうです。 – Samar

関連する問題