2016-04-10 14 views
1

Ich habe ein Java-Programm, das ich in Scala implementieren muss, aber ich bin sehr neu in Scala. Nach dem Lesen einer Reihe von SO Frage & Antworten sowie Lesen durch eine Reihe von Google-abgerufenen Ressourcen auf Fall-Klassen, habe ich immer noch Schwierigkeiten zu verstehen, wie man einen Verweis auf die Nachricht erhalten, die ich erhalten habe? Beispielcode ist unten:Scala/Akka Wie verweisen Sie auf die empfangene Nachricht?

case class SpecialMessage(key: Int) { 
    val id: Int = Main.idNum.getAndIncrement().intValue() 
    def getId(): Int = { 
    return id 
    } 
} 

Dann in einer anderen Klasse erhält ich mit dieser Nummer zu verweisen versuchen:

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

    // Do stuff with empID 
    } 
} 

kann ich nicht herausfinden, was auf den rechten Seite der Augen empID setzen = um Bekomme diese ID. Ist das wirklich einfach oder etwas, das normalerweise nicht gemacht wird?

Antwort

3

Dies sind zwei Möglichkeiten zu tun, was Sie wollen, die eine auswählen, die am besten passt

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 
} 
+0

Vielen Dank! Ich dachte, es wäre so einfach, aber ich konnte nirgends Informationen darüber finden. Ich danke dir sehr! – smkarber

+0

Gern geschehen. –

0

Pim Antwort gut ist. Aber vielleicht können Sie die Struktur von SpecialMessage wie

case class SpecialMessage(key: Int,val id: Int = Main.idNum.getAndIncrement().intValue()) 

so können Sie id direkt von Pattern-Matching bekommen ändern.

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