我有大量的数据地图,每一张地图都需要以嵌套的方式分类。
例如,给定的项可以是A或B(由函数确定),如果是B,则可以是C或D(由另一个函数确定)等等。在每个阶段,可以向每个地图中添加更多与分类有关的数据。进行分类的功能本身是相当复杂的,可能需要引入额外的数据来进行确定。
自递归多重方法是否是构造代码以实现此目的的一种好方法?我会派遣到目前为止确定的最具体类型的一个项目,或返回最好的当前分类时,不能做进一步的。
我可以在一个单独的分类函数中使用嵌套的ifs来获得想要的效果,但是天哪太难看了。
在这里,多重方法是一个很好的选择吗?还是我让事情变得过于复杂,而忽略了一种更简单的代码构造方法呢?
发布于 2011-03-01 21:58:54
看来多个方法在这里可能很有用。我想所有的复杂性都在调度函数中?因此,一旦对顶级进行分类,就会再次使用触发不同实例的更多信息来启动multimethod?
另一种想法是以遍历决策树为基础,而不是遍历您的输入。我想知道使用clojure.zip遍历分类函数树是否是一个有趣的解决方案。每个节点上的分类函数可以告诉您下一步如何遍历树(要转到哪个子节点)。您不一定需要clojure.zip,但是它已经有树导航了。
发布于 2011-03-01 21:45:41
多方法是很棒的,因为当问题的复杂性要求时,它们允许这种级别的调度。我说如果它能做你想做的事就去做吧。
也许您可以构建一个isa hierarchy来帮助
https://stackoverflow.com/questions/5159625
复制相似问题