重新定义记录';Clojure的s字段

重新定义记录';Clojure的s字段,clojure,Clojure,在《Clojure的欢乐》中,它指出: 如果需要不同的字段,甚至可以重新定义记录 动态提供Java的编译性能 有人能告诉我这是怎么做的吗 感谢在第9章中,我们将介绍FIXO协议的定义以及TreeNode记录和TreeNode类型的扩展。我们证明了构建FIXO的实现是可以动态完成的。事实上,我们从TreeNode记录开始,扩展FIXO协议,然后定义TreeNode类型,并将FIXO扩展到它。虽然我们不改变字段的数量,但我们确实改变了类型本身,一旦扩展,通过FIXO协议的所有调用都将解析为新类型(我

在《Clojure的欢乐》中,它指出:

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

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


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


你可能不会在你将要部署的代码中这样做,但这在实验中是一种很有用的技术。试着遍历FIXO部分,并在运行时检查类型。

@Kevin Page 191-:)你的意思是如何重新定义记录?是的,我不知道如何重新定义记录并为其指定不同的字段。只需使用
defrecord
重新定义记录即可。