- Clojure 教程 (jiào chéng)
- Clojure - 首页 (shǒu yè)
- Clojure - 概述 (gài shuò)
- Clojure - 环境 (huán jìng)
- Clojure - 基本语法 (jī běn yǔ fǎ)
- Clojure - REPL
- Clojure - 数据类型 (shù jù lèi xíng)
- Clojure - 变量 (biàn liàng)
- Clojure - 运算符 (yùn suàn fú)
- Clojure - 循环 (xún huán)
- Clojure - 决策 (jué cè)
- Clojure - 函数 (hán shù)
- Clojure - 数字 (shù zì)
- Clojure - 递归 (dì guī)
- Clojure - 文件 I/O
- Clojure - 字符串 (zì fù chuàn)
- Clojure - 列表 (liè biǎo)
- Clojure - 集合 (jí hé)
- Clojure - 向量 (wèi liàng)
- Clojure - 映射 (yìng shè)
- Clojure - 命名空间 (míng mìng kōng jiān)
- Clojure - 异常处理 (yí cháng chǔ lǐ)
- Clojure - 序列 (xuán liè)
- Clojure - 正则表达式 (zhèng zé biǎo dá shì)
- Clojure - 断言 (duàn yán)
- Clojure - 解构 (jiě gòu)
- Clojure - 日期与时间 (rì qī yǔ shí jiān)
- Clojure - 原子 (yuán zǐ)
- Clojure - 元数据 (yuán shù jù)
- Clojure - StructMaps
- Clojure - 代理 (dài lǐ)
- Clojure - 观察者 (guān chá zhě)
- Clojure - 宏 (hóng)
- Clojure - 引用值 (yǐn yòng zhí)
- Clojure - 数据库 (shù jù kù)
- Clojure - Java 接口 (jiē kǒu)
- Clojure - 并发编程 (bìng fā biān chéng)
- Clojure - 应用 (yìng yòng)
- Clojure - 自动化测试 (zì dòng huà cè shì)
- Clojure - 库 (kù)
- Clojure 有用资源 (yǒu yòng zī yuán)
- Clojure - 快速指南 (kuài sù zhǐ nán)
- Clojure - 有用资源 (yǒu yòng zī yuán)
- Clojure - 讨论 (táo lùn)
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)