2013-06-03 50 views
1

在Clojure中,如果我創建一個未來,然後失去了它的名字,例如:的Clojure:Unreferencable未來

(def lost-future 
    (future 
    (while true 
     (do 
     (pr "Still here...") 
     (Thread/sleep 10000))))) 

(def lost-future nil) 

訪問有沒有辦法,現在發現未來?我嘗試使用(ns-map),但當然這隻會返回lost-future的新值。

我知道這是一個容易避免的問題,但我很好奇,如果我問的是可能的。

謝謝!

+2

也許這個評論是脫離主題,但只是爲了記錄,爲了避免重新引用,你可以使用[defonce](http://clojure.github.io/clojure/clojure.core-api.html#clojure。芯/ defonce)。 – ssedano

+1

期貨在'clojure.lang.Agent/soloExecutor'中執行 - 但所述對象似乎沒有提供任何訪問其當前執行任務的方式。 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html – vemv

回答

5

不,沒有一般的方法來做到這一點。不像你在你的問題中指出的那樣,永遠都不需要。

另外,您應該在現有名稱上幾乎不會有def