1
從我讀的地方看,如果你將一個新值綁定到Clojure中的一個動態變量,那麼這個新值只能在該線程中使用。動態變量和線程/睡眠
因此,爲了測試,我創建了這個代碼:
(def *dynamic-var* "dynamic var")
(defn run-it []
(future (binding [*dynamic-var* "new-value"] (Thread/sleep 3000) (println *dynamic-var*)))
(future (Thread/sleep 1000) (println *dynamic-var*)))
我的問題是:爲何第一個線程(必須打印的「新價值」)從未運行?它從不向控制檯輸出「新值」。
謝謝,明白了!我正在從靜態類型化Java轉換爲動態類型化Clojure。我習慣於IDE的支持,並且犯這麼多錯誤,因爲這個工具並沒有警告我。你提到的「警告」實際上並沒有出現。謝謝! –
不客氣!當我在REPL中運行代碼時,我收到了警告,我沒有檢查它是否在REPL之外運行時是否打印。 –