Clojure - 傳送



此函式用於向代理傳送值。

語法

以下是語法。

(send agentname function value)

引數 − ‘agentname’ 是將 send 函式重定向到的代理。 ‘function’ 用於確定如何更改代理的值。在本例中,我們將使用加號 + 來向代理的現有值新增一個值。 ‘Value’ 是傳遞給函式的值,該值將用於相應地更新代理的值。

返回值 − 返回帶有新值的代理物件。

示例

以下程式演示瞭如何使用它。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (agent 0))
   (println @counter)
   
   (send counter + 100)
   (println "Incrementing Counter")
   (println @counter))
(Example)

輸出

上述程式產生以下輸出。

0
Incrementing Counter
0

請注意以下關於上述程式的內容。

  • 由於 send 函式是非同步函式,因此代理值更新存在時間延遲。這就是為什麼我們在程式中添加了額外的 ‘println’ 語句。這是為了給 Clojure 環境提供相應更新代理值所需的時間。

  • 其次,執行上述程式時,程式不會立即終止。這是因為 Clojure 環境不知道是否可以安全地關閉代理。我們將在下一個函式描述中瞭解如何關閉代理。

clojure_agents
廣告