在Clojure的喜悦中,它指出:
如果需要有不同的字段,您甚至可以重新定义记录 为您提供动态编译的Java性能
有人能告诉我这是怎么做到的吗?
由于
答案 0 :(得分:6)
在第9章中,我们将介绍FIXO
协议的定义以及TreeNode
记录和TreeNode
类型的扩展。我们表明,构建FIXO
的实现可以动态完成。实际上,我们从TreeNode
记录开始,扩展FIXO
协议,然后定义TreeNode
类型并将FIXO
扩展到它。虽然我们不更改字段数,但我们确实更改了类型本身,一旦扩展,所有通过FIXO
协议的调用都会解析为新类型(我们还必须将FIXO
扩展名重新定义为{ {1}}正在返回旧的基于记录的nil
。
您可能不会在部署的代码中执行此操作,但在实验时它是一种有用的技术。尝试浏览FIXO部分并随时检查类型。