【发布时间】:2010-06-24 13:26:40
【问题描述】:
我正在 Clojure 中开发一个具有多个子结构的复杂数据结构。
我知道随着时间的推移我会想要扩展这个结构,并且有时可能想要在不破坏数据结构的不同用户的情况下改变内部结构(例如,我可能想要将向量更改为哈希图,添加一些出于性能原因的某种索引结构,或合并 Java 类型)
我目前的想法是:
- 使用各种访问器方法为整体结构定义协议
- 创建一个小型函数库,用于导航数据结构,例如(query-substructure-abc param1 param2)
- 使用 defrecord 或 deftype 实现数据结构,并使用定义为使用迷你库的协议方法
我认为这会起作用,尽管我担心它开始看起来像是很多“胶水”代码。此外,这可能也反映了我对面向对象的方法更加熟悉。
在 Clojure 中推荐的方法是什么?
【问题讨论】:
标签: data-structures clojure encapsulation abstraction