2014-09-26 8 views
7

Gibt es eine Möglichkeit, dies zu machen:Scala-Capture-Objektreferenz, während immer noch Extraktoren mit

// 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) 
    } 
} 

in so etwas wie folgt aus:

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

Antwort

17

Verwenden @ auch die vollständige Objekt zu erfassen.

case x @ Message(channel, data, sender) => { 
    // do stuff with channel, data, sender 
    foo ! x 
} 
+0

Danke! Sie sind wirklich oben auf den grundlegenden Scala Fragen! – Hamy