Clojure - 代理 (dài lǐ)



正如多次指出的那样,Clojure 是一种编程语言,其中许多数据类型都是不可变的,这意味着更改变量值的唯一方法是创建一个新变量并将新值赋给它。但是,Clojure确实提供了一些可以创建可变状态的元素。我们已经看到这可以通过原子数据类型来实现。另一种实现方法是通过代理。

代理 (dài lǐ) 提供单个位置的独立异步更改。代理在其生命周期内绑定到单个存储位置,并且仅允许作为操作结果对该位置(到新状态)进行变异。操作是异步应用于代理状态的函数(可选地,带有其他参数),其返回值成为代理的新状态。

关于代理,Clojure 中可以执行以下操作。

序号 (xué hào) 操作和描述 (cāo zuò hé miáo shù)
1 agent

使用 agent 命令创建代理。

2 send

此函数用于向代理发送值。

3 shutdown-agents

此函数用于关闭任何正在运行的代理。

4 send-off

在某些情况下,代理被分配一个阻塞性质的函数。

5 await-for

由于更新代理的值时存在延迟,Clojure 提供了一个“await-for”函数,用于指定以毫秒为单位等待代理更新的时间。

6 await

阻塞当前线程(无限期!),直到来自此线程或代理到代理的所有已分派操作都已发生。将阻塞失败的代理。

7 agent-error

如果代理失败,则返回在代理的异步操作期间引发的异常。如果代理不失败,则返回 nil。

广告 (guǎng gào)