Scala/Akka您如何引用收到的消息?

Scala/Akka您如何引用收到的消息?,scala,akka,case-class,Scala,Akka,Case Class,我有一个Java程序,必须用Scala实现,但我对Scala非常陌生。在阅读了大量的SO问答以及Google检索到的案例类资源之后,我仍然难以理解如何获取我收到的消息的引用?示例代码如下: case class SpecialMessage(key: Int) { val id: Int = Main.idNum.getAndIncrement().intValue() def getId(): Int = { return id } } 然后,在另一个类的recei

我有一个Java程序,必须用Scala实现,但我对Scala非常陌生。在阅读了大量的SO问答以及Google检索到的案例类资源之后,我仍然难以理解如何获取我收到的消息的引用?示例代码如下:

case class SpecialMessage(key: Int) {
  val id: Int = Main.idNum.getAndIncrement().intValue()   
  def getId(): Int = {
    return id
  }
}
然后,在另一个类的receive中,我尝试引用该数字:

def receive() = {
  case SpecialMessage(key) {
    val empID = ?? getId() // Get the id stored in the Special Message

    // Do stuff with empID
  }
}

我不知道如何正确看待empID=以获得该id。这真的很简单,还是通常不做的事情?

这是两种方法,选择最适合的方法

case msg: SpecialMessage => {
  val empID = msg.getId() // Get the id stored in the Special Message
  // Do stuff with empID
}
case msg @ SpecialMessage(key) => {
  val empID = msg.getId() // Get the id stored in the Special Message
  // Do stuff with empID
}
皮姆的回答很好。 但是也许你可以修改特殊消息的结构,比如

  case class SpecialMessage(key: Int,val id: Int = Main.idNum.getAndIncrement().intValue())
所以您可以直接从模式匹配中获取id

def receive() = {
  case SpecialMessage(key, empID) {
     // Do stuff with empID
  }
}

非常感谢你!我想这会很容易,但我在任何地方都找不到关于它的信息。非常感谢你!