给定一个案例类和配套对象,如下所示:
case class Example(a: String)
object Example {
implicit def concat(b: String): Example =
Example(this.a + b)
}
如何使隐式方法编译?换句话说,是否可以引用已调用隐式方法的当前实例?
我认为您想要的是以下内容:
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._
使用扩展方法。