当前位置: 首页 > 文档资料 > Clojure 中文教程 >

send-off

优质
小牛编辑
132浏览
2023-12-01

存在这样的情况,其中为代理分配了本质上是阻塞的功能。 一个简单的例子是,考虑您正在从一个本身就是阻塞的文件中读取内容。 因此send-off函数将首先立即返回代理并继续执行文件操作。 文件操作完成后,它将自动使用文件内容更新代理。

语法 (Syntax)

以下是语法。

(send agentname function value)

Parameters - 'agentname'是将send函数重定向到的代理程序。 'function'用于确定代理的值将以何种方式更改。 在我们的例子中,我们将使用加号+符号将值添加到代理的现有值。 'Value'是传递给函数的值,而函数又将用于相应地更新代理的值。

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

例子 (Example)

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

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

我们正在查看递增计数器值的相同示例,但是从以下输出中可以清楚地看出send-off函数的作用。

输出 (Output)

上述程序产生以下输出。

0
0
0

可以看出,即使我们已经向代理发送了一个将值设置为100的函数,但它并没有立即反映出来。 send-off函数首先返回代理的值。 一旦Clojure正确设置了代理的值,代理的值就会更新,我们就能看到代理的新值。