2011-01-13 22 views
5

Piszę narzędzie w Scali, które zawiera aktora "kopia pliku". Wysyłam nazwy plików do skopiowania, a aktor robi je po jednym na raz.Aktorzy w Clojure

Jak zrobić to samo w Clojure za pomocą agentów?

+0

Możesz być zainteresowany tą [propozycją wymiany stosu] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "recenzja kodu"). Jest prawie gotowy do rozpoczęcia beta, wystarczy kilka dodatkowych. – greatwolf

Odpowiedz

2

Dlaczego musisz to zrobić za pomocą agentów? ponieważ chcesz je skopiować asynchronicznie? Ale jeśli nadal chcesz to zrobić, możesz użyć czegoś takiego:

(do-all (for [x file-names] (send-off agent-name copy-function x))) 

chociaż, może lepiej użyć futures?

+0

Myślałem, że celem agentów jest to, że utrzymują jakiś stan, który można ** zmienić **, przekazując funkcję. Przypuszczam, że jeśli nie dbasz o poprzednią wartość, ale po prostu chcesz użyć agenta do wykonania pracy asynchronicznej, możesz przekazać funkcję kopiowania, która ignoruje poprzednią wartość. – Ralph

+0

Tak, na pewno - można przechowywać pewne dane o stanie do agenta –

+1

Jeśli nie zamierzasz przechowywać stanu w agentach, lepiej jest użyć przyszłości do wykonania pracy asynchronicznie. –