代理商(Agents)
优质
小牛编辑
129浏览
2023-12-01
正如多次指出的那样,Clojure是一种编程语言,其中许多数据类型是不可变的,这意味着可以改变变量值的唯一方法是创建一个新变量并为其赋值。 但是,Clojure确实提供了一些可以创建可变状态的元素。 我们已经看到这可以用atom数据类型实现。 另一种可以实现的方式是通过代理商。
Agents提供各个位置的独立,异步更改。 代理在其生命周期中绑定到单个存储位置,并且仅允许由于操作而发生该位置的突变(到新状态)。 操作是异步应用于代理状态并且其返回值成为代理的新状态的函数(可选地,附加参数)。
关于代理,Clojure可以执行以下操作。
Sr.No. | 操作和描述 |
---|---|
1 | agent 使用agent命令创建代理。 |
2 | send 此函数用于将值发送到代理。 |
3 | shutdown-agents 此函数用于关闭所有正在运行的代理。 |
4 | send-off 存在这样的情况,其中为代理分配了本质上是阻塞的功能。 |
5 | await-for 由于更新代理的值时存在延迟,因此Clojure提供了“await-for”函数,该函数用于指定等待代理更新的时间(以毫秒为单位)。 |
6 | await 阻止当前线程(无限期!),直到到目前为止从该线程或代理程序发送到代理程序的所有操作都已发生。 将阻止失败的代理。 |
7 | agent-error 如果代理失败,则返回代理的异步操作期间抛出的异常。 如果代理未失败,则返回nil。 |