Clojure - send 函数
send 函数用于向代理发送值。
语法
语法如下。
(send agentname function value)
参数 − 'agentname'是发送函数被重定向到的代理。 "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
请注意以下有关上述程序的信息。
由于发送函数是异步函数,因此更新代理值时存在时间延迟。 这就是为什么我们在程序中添加了额外的"println"语句。 这是为了给 Clojure 环境相应更新代理值所需的时间。
其次,当你运行上面的程序时,程序不会立即终止。 这是因为 Clojure 环境不知道关闭代理是否安全。 我们将在下一个功能描述中看到如何关闭代理。