Scala/Akka您如何引用收到的消息?
我有一个Java程序,必须用Scala实现,但我对Scala非常陌生。在阅读了大量的SO问答以及Google检索到的案例类资源之后,我仍然难以理解如何获取我收到的消息的引用?示例代码如下: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
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
}
}
非常感谢你!我想这会很容易,但我在任何地方都找不到关于它的信息。非常感谢你!