如何在隐式方法中引用“ this”

问题描述 投票:2回答:1

给出如下的案例类和伴随对象:

case class Example(a: String)

object Example {
  implicit def concat(b: String): Example =
    Example(this.a + b)
}

如何使隐式方法编译?换句话说,是否可以引用已调用隐式方法的当前实例?

scala implicit
1个回答
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._使用扩展方法。

© www.soinside.com 2019 - 2024. All rights reserved.