《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/