2011-12-15 8 views

答えて

2

これはあなたのニーズに合っていませんか?

class A[T](ts: Seq[T]) 
+0

それは私から離れて移動しようとしていますものです。これは私の現在の実装がどのように動作するかを示していますが、パラメータ化された型はたくさんのジェネリックインスタンス(たとえばList [String]、List [Int]、List [NyanCat] TV(NTSC)、TV(PAL)、TV(Digital)などのユースケースが10以下のものではなく、 – duckworthd

6

クラスのメンバーは、コンストラクタのパラメータ宣言の対象外です。

これはあなたが得ることができる限り近い:

scala> trait T { type T; val a: T } 
defined trait T 

scala> def A[X](x: X) = new T { type T = X; val a = x } 
A: [X](x: X)Object with T{type T = X} 

scala> A[Int](0) 
res0: Object with T{type T = Int} = [email protected] 

scala> A[String](0) 
<console>:10: error: type mismatch; 
found : Int(0) 
required: String 
       A[String](0) 
         ^
scala> class AA[X](val a: X) extends T { type T = X } 
defined class AA 

scala> new AA[Int](0) 
res5: AA[Int] = [email protected] 

scala> new AA[String](0) 
<console>:10: error: type mismatch;  
    found   : Int(0)  
    required: String              
     new AA[String](0)              
                    ^ 
+0

私はこのタイプの理論についてはわかりません。これがどのようにOPの目標を達成するかについてもっと詳しく説明できますか? –

+2

彼は型メンバーと同じ型のコンストラクタ引数を持つことを望んでいました。クラス「AA」はそれにかなり近いです。 – retronym

+0

説明してくれてありがとう、クラス 'AA'は本当に面白いです! –

関連する問題