Aar*_*rup 14
代理特征提供用于创建代表一个有用的依据,但要注意,它仅提供了方法的实现在Any(equals,hashCode,和toString).您必须自己实施任何其他转发方法.代理通常与pimp-my-library模式一起使用:
class RichFoo(val self: Foo) extends Proxy {
def newMethod = "do something cool"
}
object RichFoo {
def apply(foo: Foo) = new RichFoo(foo)
implicit def foo2richFoo(foo: Foo): RichFoo = RichFoo(foo)
implicit def richFoo2foo(richFoo: RichFoo): Foo = richFoo.self
}
Run Code Online (Sandbox Code Playgroud)
标准库也包含了一组可用于创建收集有用的代理(性状SeqProxy,SetProxy,MapProxy,等).
最后,scala-incubator(AutoProxy插件)中有一个编译器插件,它将自动实现转发方法.另见这个问题.