给出一个case类和同伴对象,如下所示:
case class Example(a: String)
object Example {
implicit def concat(b: String): Example =
Example(this.a + b)
}
如何使隐式方法编译?换句话说,是否可以引用已调用隐式方法的当前实例?
答案 0 :(得分:6)
我认为您想要的是以下内容:
object Foo {
implicit class RichExample(val e: Example) {
def concat(b: String): Example = Example(e.a + b)
}
}
或使用匿名隐式类
object Foo {
implicit def richExample(e: Example) = new {
def concat(b: String): Example = Example(e.a + b)
}
}
然后您可以像这样使用它
import Foo._
Example("foo").concat("bar")
如果该对象被称为Example
,则它将成为类Example
的伴随对象,并且您不必import Foo._
即可使用扩展方法。