Scala/Akka 您如何引用收到的消息?
Scala/Akka How do you reference the message being received?
我有一个必须在 Scala 中实现的 Java 程序,但我对 Scala 非常陌生。在阅读了一些 SO 问题和答案以及阅读了一些 Google 案例 classes 的检索资源之后,我仍然无法掌握如何获取对我收到的消息的引用?示例代码如下:
case class SpecialMessage(key: Int) {
val id: Int = Main.idNum.getAndIncrement().intValue()
def getId(): Int = {
return id
}
}
然后在另一个 class 的接收中,我试图通过以下方式引用该号码:
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
}
Pim 的回答很好。
但是也许你可以修改 SpecialMessage 的结构,比如
case class SpecialMessage(key: Int,val id: Int = Main.idNum.getAndIncrement().intValue())
所以你可以直接从模式匹配中获取id。
def receive() = {
case SpecialMessage(key, empID) {
// Do stuff with empID
}
}
我有一个必须在 Scala 中实现的 Java 程序,但我对 Scala 非常陌生。在阅读了一些 SO 问题和答案以及阅读了一些 Google 案例 classes 的检索资源之后,我仍然无法掌握如何获取对我收到的消息的引用?示例代码如下:
case class SpecialMessage(key: Int) {
val id: Int = Main.idNum.getAndIncrement().intValue()
def getId(): Int = {
return id
}
}
然后在另一个 class 的接收中,我试图通过以下方式引用该号码:
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
}
Pim 的回答很好。 但是也许你可以修改 SpecialMessage 的结构,比如
case class SpecialMessage(key: Int,val id: Int = Main.idNum.getAndIncrement().intValue())
所以你可以直接从模式匹配中获取id。
def receive() = {
case SpecialMessage(key, empID) {
// Do stuff with empID
}
}