Scala捕获对象引用,同时仍使用提取器

Ham*_*amy 8 scala pattern-matching case-class akka

有没有办法做到这一点:

// I'm using akka, perhaps there's a magic variable inside receive I can use
def receive = {
  case Message(channel, data, sender) => {
    // do stuff with channel, data, sender
    // Oops, I want to reuse message, so I have to build a new one
    foo ! Message(channel, data, sender)
  }
}
Run Code Online (Sandbox Code Playgroud)

进入这样的事情:

def receive = {
  case x: Message(channel, data, sender) => {
    // do stuff with channel, data, sender
    // Now I want to reuse message
    foo ! x
  }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*jac 20

用于@捕获完整对象.

case x @ Message(channel, data, sender) => {
    // do stuff with channel, data, sender
    foo ! x
}
Run Code Online (Sandbox Code Playgroud)