[英]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.