clojure - 在 Clojure 中重新定义记录的字段

标签 clojure

《Clojure 的乐趣》中指出:

you can even redefine a record if desired to have different fields giving you the compiled performance of Java dynamically

有人可以告诉我这是如何完成的吗?

谢谢

最佳答案

在第 9 章中,我们将详细介绍 FIXO 的定义。 TreeNode 的协议(protocol)和扩展记录和TreeNode类型。我们表明建立 FIXO 的实现可以动态完成。事实上,我们从 TreeNode 开始记录,延长FIXO协议(protocol),然后定义 TreeNode输入并扩展 FIXO改为它。虽然我们不更改字段的数量,但我们确实更改了类型本身,并且一旦扩展,所有调用都会通过 FIXO协议(protocol)解析为新类型(我们还必须将 FIXO 扩展重新定义为 nil,因为它返回旧的基于记录的 NodeType

您可能不会在要部署的代码中执行此操作,但在实验时这是一种有用的技术。尝试浏览 FIXO 部分并检查类型。

关于clojure - 在 Clojure 中重新定义记录的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463889/

相关文章:

clojure - 翻转传递参数的顺序

Clojure:创建或更新向量中的映射值

json - 使用 Clojure 从 JSON 中获取数据(嵌套列表等)

lambda - 线程宏 -> 带有匿名函数

clojure - 打ic 1.0.0-beta1错误

clojure - 在 Clojure 中编译 - Redis/Carmine

json - 如何在Clojure中将JSON漂亮地打印到文件中?

Clojure Multimethods 区分 map 和 map 列表

clojure - 我需要做一些特殊的事情才能使用 clojure.core/time 吗?

multithreading - 你如何杀死一个 core.async/thread?