2014-09-26 16 views
7

Có cách nào để làm điều này:Scala đối tượng chụp tài liệu tham khảo trong khi vẫn sử dụng máy vắt

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

Into một cái gì đó như thế này:

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

Trả lời

17

Sử dụng @ để cũng có thể chụp toàn bộ đối tượng.

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

Cảm ơn! Bạn đang thực sự đứng đầu những câu hỏi cơ bản về Scala! – Hamy

Các vấn đề liên quan