无涯教程-Clojure - send-off函数

31 阅读1分钟

在某些情况下,为代理分配了实际上是阻止的函数。一个简单的示例是,考虑您正在从本质上是阻塞的文件中读取内容。

send-off - 语法

(send agentname function value)

参数      -  " agentname"是将发送函数重定向到的代理, "function"用于确定更改代理价值的方式, "value"是传递给该函数的值,该值又将用于相应地更新代理的值。

返回值  -  如果存在非阻塞函数,则首先按原样返回代理,最后,返回具有新值的代理对象 。

send-off - 示例

以下程序显示了有关如何使用它的示例。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (agent 0))
   (println @counter)

(send-off counter + 100) (println @counter) (println @counter)) (Example)

我们正在看增加计数器值的相同示例,但是从下面的输出中,可以清楚看出发送函数的作用。

上面的程序产生以下输出。

0
0
0

可以看出,即使我们已经向代理发送了将值设置为100的函数,它也不会立即反映出来。发送函数首先按原样返回代理的值。一旦Clojure正确设置了代理的值,便会更新代理的值,我们便可以看到代理的新值。

参考链接

www.learnfk.com/clojure/clo…