加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala转发或委托方法来封装对象

发布时间:2020-12-16 18:30:54 所属栏目:安全 来源:网络整理
导读:有没有可能隐式地将一些类方法转发给封装对象? case class Entity(id: Int,name: String,) { private lazy val lastScan = new LastScan def getLastScanDate = lastScan.getLastScanDate def updateLastScanDate = lastScan.updateLastScanDate} 我想避免
有没有可能隐式地将一些类方法转发给封装对象?

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的编译器插件来实现这种自动委托.

他似乎正在开发一个基于宏的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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读