gpt4 book ai didi

Scala 将方法转发或委托(delegate)给封装对象

转载 作者:行者123 更新时间:2023-12-04 21:14:33 31 4
gpt4 key购买 nike

是否有可能将某些类方法隐式转发到封装对象?

case class Entity(id: Int, name: String,) {
private lazy val lastScan = new LastScan

def getLastScanDate = lastScan.getLastScanDate
def updateLastScanDate = lastScan.updateLastScanDate
}

我想避免创建 def updateLastScanDate = lastScan.updateLastScanDate只是将方法转发给包装的对象。

最佳答案

用简单的语言这是不可能的。 Kevin Wright 曾经有一个编译器插件来实现这种自动委托(delegate)。

他似乎正在研究 Autorproxy "Rebooted"现在是基于宏的版本,可以直接包含在您的项目中。我在此处粘贴其测试来源的示例:

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")

关于Scala 将方法转发或委托(delegate)给封装对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27035808/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com