Kam*_*nek 5 delegates scala delegation forward-declaration
有没有可能隐式地将一些类方法转发给封装对象?
case class Entity(id: Int, name: String,) {
private lazy val lastScan = new LastScan
def getLastScanDate = lastScan.getLastScanDate
def updateLastScanDate = lastScan.updateLastScanDate
}
Run Code Online (Sandbox Code Playgroud)
我想避免创建def updateLastScanDate = lastScan.updateLastScanDate只是将方法转发到包装对象.
用简单的语言来说这是不可能的。Kevin Wright 曾经有一个编译器插件来实现这种自动委托。
他现在似乎正在开发基于宏的Autorproxy“重新启动”版本,使其可以直接包含在您的项目中。我在这里粘贴一个来自其测试来源的示例:
trait Bippy {
def bippy(i : Int): String
}
object SimpleBippy extends Bippy {
def bippy(i: Int) = i.toString
}
@delegating class RawParamWrapper(@proxy pivot: Bippy)
val wrapper = new RawParamWrapper(SimpleBippy)
assert(wrapper.bippy(42) == "42")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |