Scala 如何在匹配模式中获取case类的匹配实例

Scala 如何在匹配模式中获取case类的匹配实例,scala,match,case-class,Scala,Match,Case Class,请看下面的代码: def receive: Receive = { case Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => { receiver ! msg val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry) conte

请看下面的代码:

  def receive: Receive = {
    case Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => {
      receiver ! msg
      val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry)
      context.become(runtime(Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause), cancelHandle))
    }
    case _ =>
  }
您可以看到,在调用
context.been
时,我必须完全复制case class
Begin
的值,即传递其全部参数。这是可行的,但在我看来,这是代码的重复。有没有办法以某种方式获取匹配的值并将其传递出去?

如下所示:

def receive: Receive = {
  case fullMsg @ Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => {
    receiver ! msg
    val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry)
    context.become(runtime(fullMsg, cancelHandle))
  }
  case _ =>
}
就像这样:

def receive: Receive = {
  case fullMsg @ Begin(msg, expectedReply, signalSuccessWith, replyTo, receiver, pause) => {
    receiver ! msg
    val cancelHandle = context.system.scheduler.schedule(pause, pause, context.self, Retry)
    context.become(runtime(fullMsg, cancelHandle))
  }
  case _ =>
}