我是新來的這個花哨的語言scala,我正嘗試創建一個記錄scala演員的庫。我的庫有一個擴展了Actor類的類Logger。 因此,任何使用actor模型的Scala應用程序都可以從這個類擴展而來,或者爲Actor類添加日誌功能。例如,類MyClass擴展記錄器。 在我的記錄器類中,我實現了邏輯,即當有人向某個參與者發送消息時,它將由發送參與者的日誌文件記錄。 爲此,每當有人將消息發送給另一個演員,而不是調用斯卡拉發送功能,像隱式記錄演員在scala中收到的消息
caller ! msg
庫的用戶呼叫
send(caller,msg)
庫函數將創建一個條目這條消息在日誌中。這工作正常。 我希望爲演員收到的消息添加類似的功能。也就是說,無論何時一個演員收到一條消息,圖書館都應該在日誌文件中爲接收到的消息做一個條目。這樣做的一個方法是,每當用戶收到的方法,他可以顯式調用日誌方法是這樣,
while (true) {
receive {
case msg =>
log(sender, msg)
// do some stuff
}
}
日誌功能使得在日誌中的條目。 我希望用戶不需要寫這行日誌(發送者,味精),以便該庫對用戶是透明的,並且沒有添加用戶需要編寫的代碼,並且所有內容都由Logger類隱式記錄。 有沒有辦法做到這一點? 在此先感謝。
謝謝..唯一事情是,接收方法具有這樣的簽名: 倍率DEF接收[A](F:PartialFunction [任意,A]):A = { 日誌(F) 超級(f) } 有沒有一種方法可以告訴Logger類中發送消息的人以及哪種類型的消息是? log(sender,f) 在記錄器類中不起作用。 f是部分功能,而不是收到什麼類型的消息。 –