2014-09-26 16 views
7

Esiste un modo per fare questo:Scala riferimento a un oggetto di cattura pur utilizzando estrattori

// 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 qualcosa di simile a questo:

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

risposta

17

Usa @ per catturare anche l'oggetto completo.

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

Grazie! Sei davvero in cima alle domande di base su Scala! – Hamy

Problemi correlati