- Clojure 教程
- Clojure - 主页
- Clojure - 概述
- Clojure - 环境
- Clojure - 基本语法
- Clojure-REPL
- Clojure - 数据类型
- Clojure - 变量
- Clojure - 运算符
- Clojure - 循环
- Clojure - 决策
- Clojure - 函数
- Clojure - 数字
- Clojure - 递归
- Clojure - 文件 I/O
- Clojure - 字符串
- Clojure - 列表
- Clojure - 集
- Clojure - 向量
- Clojure - 地图
- Clojure - 命名空间
- Clojure - 异常处理
- Clojure - 序列
- Clojure - 正则表达式
- Clojure - 谓词
- Clojure - 解构
- Clojure - 日期和时间
- Clojure - 原子
- Clojure - 元数据
- Clojure - 结构映射
- Clojure - 代理
- Clojure - 观察者
- Clojure - 宏
- Clojure - 参考值
- Clojure - 数据库
- Clojure - Java 接口
- Clojure - 并发编程
- Clojure - 应用程序
- Clojure - 自动化测试
- Clojure - 库
- Clojure 有用资源
- Clojure - 快速指南
- Clojure - 有用的资源
- Clojure - 讨论
Clojure - 代理
正如多次指出的那样,Clojure 是一种编程语言,其中许多数据类型都是不可变的,这意味着更改变量值的唯一方法是创建一个新变量并向其分配新值。然而,Clojure 确实提供了一些可以创建可变状态的元素。我们已经看到这可以通过Atomics数据类型来实现。实现这一目标的另一种方法是通过代理。
代理提供各个位置的独立、异步更改。代理在其生命周期内绑定到单个存储位置,并且只允许该位置因操作而发生突变(到新状态)。操作是异步应用于代理状态的函数(带有可选的附加参数),其返回值成为代理的新状态。
在 Clojure 中可以对代理进行以下操作。