Clojure send
2018-12-27 14:57 更新
此函数用于向代理发送一个值。
语法
以下是 send 基本语法:
(send agentname function value)
参数 − 'agentname'是发送功能被重定向到的代理。 “函数”用于确定代理的值将更改的方式。 在我们的示例中,我们将使用加号+符号向代理的现有值中添加一个值。 'Value'是传递给函数的值,它将相应地用于更新代理的值。
返回值 − 返回具有新值的代理对象。
例
下面的程序显示了如何使用 send 的示例。
(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环境不知道关闭代理是否安全。 我们将在下一个功能描述中看到如何关闭代理。
以上内容是否对您有帮助:
更多建议: