1

SLS での暗黙的な解決のルールが見つかりました。

  1. T が T1 with ... with Tn の複合型の場合、T1、...、Tn、および T 自体の部分の和集合

  2. T がパラメータ化された型 S[T1, ..., Tn] の場合、S と T1, ..., Tn の部分の和集合

  3. T がシングルトン型 p.type の場合、p の型の部分

  4. T が型射影 S#U の場合、S の部分と T 自体

  5. それ以外の場合はすべて、T 自体のみ

以下の例は、ルール 4 に基づいた暗黙の解決ですか?

object Foo{
   trait Bar
   implicit def newBar = new Bar{
        override def toString = "Implicit Bar"
   }

}

implicitly[Foo.Bar]

ありがとう

ズラヤ

4

1 に答える 1

1

はい、それは正しいと思います。Fooシングルトンオブジェクトの場合、タイプFoo.Barは次と同じだと思いますFoo.type#Bar

implicitly[Foo.type#Bar] // ok

また:

def a(f: Foo.type#Bar) {}
def b(f: Foo.Bar) { a(f) }       // accepted

def c(f: Foo.Bar) {}
def d(f: Foo.type#Bar) { c(f) }  // accepted
于 2013-04-15T10:27:57.927 に答える