[英]Scala implicit context resolution
我發現有用於SLS隱式解決規則的規則:
如果T是具有...和Tn的復合類型T1,則T1,...,Tn以及T本身的部分的並集
如果T是參數化類型S [T1,...,Tn],則S和T1,...,Tn的部分的並集
如果T是單例類型p.type,則p類型的部分
如果T是類型投影S#U,則S的部分以及T本身
在所有其他情況下,僅T本身
下面的示例是否基於規則4隱式解決?
object Foo{
trait Bar
implicit def newBar = new Bar{
override def toString = "Implicit Bar"
}
}
implicitly[Foo.Bar]
謝謝
Zlaja
是的,我相信這是正確的。 我認為對於單例對象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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.