2011-12-31 7 views
-1

次のコードが動作するのはなぜ:拡張クラスがScalaでGenericであるときに暗黙的に失敗するのはなぜですか?

class X 

class A(implicit c: X) 
class B(arg: Int)(implicit c: X) extends A 
class C(arg: Int)(implicit c: X) extends B(arg) 

ではなく、この1:

次のエラーで失敗し
class X 

class A(implicit c: X) 
class B[T](arg: T)(implicit c: X) extends A 
class C(arg: Int)(implicit c: X) extends B(arg) 

error: could not find implicit value for parameter c: core.X

class C(arg: Int)(implicit c: X) extends B(arg)

+0

-1。エラーメッセージを省略した場合は役に立ちません。 – sschaef

+0

@Antorasあなたは正しい...固定されています。 –

+0

どちらも2.9.1.finalの私のために働く。どのバージョンを使用していますか? –

答えて

4

あなたが助け場合は動作するようですBのコンストラクタを呼び出すときに型を推測する:

class X 

class A(implicit c: X) 
class B[T](arg: T)(implicit c: X) extends A 
class C(arg: Int)(implicit c: X) extends B[Int](arg) 

したがって、基本的な制限のようには見えません。しかし、あなたが含まれていないエラーメッセージは非常に役に立たないです。はパラメータcの暗黙の値を見つけることができませんでした:X

関連する問題