如何使用trait向Scala中的类添加新方法?

时间:2015-03-06 06:54:12

标签: scala traits

我有第三方A类:

class A {
  def methodA = ...
}

我想使用use trait将新方法 methodT 添加到A的实例

trait Atrait[...] {
  def methodT = {
    // how to get a reference of instance of type A?
  }
}

这个 methodT 特定于某些情况,所以我应该在特征中使用约束。但我无法理解。另外,如何在特征中调用A方法的实例?

更新

Trait 不会以这种方式工作。请参阅答案以了解替代解决方案。

1 个答案:

答案 0 :(得分:6)

这是将方法添加到第三方类的标准模式:

class A

implicit class ExtendedA(val a: A) extends AnyVal {
  def methodT: Unit = { println("called A.methodT") }
}

然后你可以这样做:

val a = new A
a.methodT