由于代理的值被更新時(shí)存在延遲,因此Clojure提供了一個(gè)“await-for”函數(shù),用于指定等待代理更新的時(shí)間(以毫秒為單位)。
以下是 await-for 基本語法:
(await-for time agentname)
參數(shù) ? 'agentname'是'await-for'函數(shù)應(yīng)該設(shè)置為的代理。 'time'是等待的時(shí)間(以毫秒為單位)。
返回值 ? 如果由于超時(shí)返回,返回邏輯假,否則返回邏輯true。
下面的程序顯示了如何使用 await-for 的示例。
(ns clojure.examples.example (:gen-class)) (defn Example [] (def counter (agent 0)) (println @counter) (send-off counter + 100) (println (await-for 100 counter)) (println @counter) (shutdown-agents)) (Example)
以上示例輸出以下結(jié)果:
0 true 100
從上面的程序可以看到,代理的值立即打印到屏幕上,因?yàn)?#39;await-for'函數(shù)包含了一個(gè)延遲,這允許Clojure更新代理的值。
更多建議: