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

pon*_*tic 5 clojure

在Clojure的喜悦中,它指出:

您甚至可以重新定义记录,如果需要,可以使用不同的字段动态地为您提供Java的编译性能

有人能告诉我这是怎么做到的吗?

谢谢

fog*_*gus 6

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

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