Clojure send

2018-12-27 14:57 更新

此函數(shù)用于向代理發(fā)送一個值。

語法

以下是 send 基本語法:

(send agentname function value)

參數(shù) ? 'agentname'是發(fā)送功能被重定向到的代理。 “函數(shù)”用于確定代理的值將更改的方式。 在我們的示例中,我們將使用加號+符號向代理的現(xiàn)有值中添加一個值。 'Value'是傳遞給函數(shù)的值,它將相應(yīng)地用于更新代理的值。

返回值 ? 返回具有新值的代理對象。

下面的程序顯示了如何使用 send 的示例。

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

輸出

以上示例輸出以下結(jié)果:

0
Incrementing Counter
0

請注意以下幾點:

  • 由于發(fā)送函數(shù)是異步函數(shù),因此當(dāng)代理的值被更新時存在時間延遲。 這就是為什么我們?yōu)槌绦蛱砑恿艘粋€額外的'println'語句。 這是為了給Clojure環(huán)境相應(yīng)地更新代理值所需的時間。

  • 其次,當(dāng)你運行上面的程序,程序不會立即終止。 這是因為Clojure環(huán)境不知道關(guān)閉代理是否安全。 我們將在下一個功能描述中看到如何關(guān)閉代理。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號