Clojure send-off

2018-12-27 15:35 更新

存在这样的情况,其中给代理分配本质上是阻塞的功能。 一个简单的例子是,考虑你正在从一个文件中读取内容,而文件本身是阻塞的。 所以发送功能将首先立即返回代理并继续文件操作。 当文件操作完成时,它将自动使用文件的内容更新代理。

语法

以下是 send-off 基本语法:

(send agentname function value)

参数 − 'agentname'是发送功能被重定向到的代理。 “函数”用于确定代理的值将更改的方式。 在我们的示例中,我们将使用加号+符号向代理的现有值中添加一个值。 '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正确地设置了代理的值,代理的值就会被更新,我们可以看到代理的新值。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号