2

我有大量数据地图,每个地图都需要以嵌套方式分类。

即,给定的项目可能是 A 或 B(由函数确定),如果是 B,则它可能是 C 或 D(由另一个函数确定),依此类推。在每个阶段,更多与分类相关的数据可以添加到每个地图中。进行分类的功能本身非常复杂,可能需要引入额外的数据来进行确定。

自递归多方法是否是构建代码以执行此操作的好方法?我会派出迄今为止为一个项目确定的最具体的类型,或者在无能为力的情况下返回当前最好的分类。

可以在单个分类函数中使用嵌套的 ifs 来获得预期的效果,但天哪,太丑了。

多方法在这里是否合适,或者我是否过于复杂化并且错过了一种更简单的代码结构方式?

4

2 回答 2

1

似乎多方法在这里可能有用。我猜所有的复杂性都在调度函数中?因此,一旦您对顶层进行分类,您就会再次使用触发不同实例的更多信息再次触发多方法?

另一种思考方式是基于遍历决策树而不是遍历您的输入。我想知道使用 clojure.zip 遍历分类函数树是否是一个有趣的解决方案。您在每个节点上的分类函数可以告诉您接下来如何遍历树(去哪个孩子)。您不一定需要 clojure.zip,但它已经包含树形导航。

于 2011-03-01T21:58:54.327 回答
0

多方法很棒,因为当问题的复杂性需要时,它们允许这种级别的调度。我说如果它做你想要的就去吧。

也许你可以建立一个isa层次结构来帮助

于 2011-03-01T21:45:41.810 回答