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

时间:2012-07-13 03:53:14

标签: clojure

在Clojure的喜悦中,它指出:

  

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

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

由于

1 个答案:

答案 0 :(得分:6)

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

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