在Scala中有一种更好的表达以下继承的方法吗?

del*_*ber 0 scala

在我的基础课我

  trait EventReceiver  {

    def onStart(start: Start) {

    }

  }
Run Code Online (Sandbox Code Playgroud)

我定义

  def benchmark = new EventReceiver {}
Run Code Online (Sandbox Code Playgroud)

因为我需要在基类中进行一些处理.在我的客户使用的子类中,他们执行类似于以下操作的操作

override def benchmark = new EventReceiver {
    override def onStart(start: Start) {
      println("benchmark start")
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这有点笨拙

override def benchmark = new EventReceiver { ...
Run Code Online (Sandbox Code Playgroud)

有没有更好的表达方式?理想情况下它会是这样的

singleword {
    override def onStart(start: Start) {
      println("benchmark start")
    }
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*rov 7

例如,

def singleword(fOnStart: Start => Unit) =
  new EventReceiver {
    override def onStart(start: Start) { fOnStart(start) }
  }
Run Code Online (Sandbox Code Playgroud)

然后,

singleword { start =>
  println("benchmark started")
}
Run Code Online (Sandbox Code Playgroud)