在Clojure中使用多方法代替cond有什么好处?

问题描述 投票:0回答:1

诚实的noobie问题:为什么不应该用cond表达式替换Clojure中的多重方法?

((请记住,我是Clojure的新手,在看了Russ Olsen的书Getting Clojure的第5章中简单的多方法示例后,便受到启发来询问。)] >>

[在回答类似问题(Performance of multimethod vs cond in Clojure)时,用户Daniel Compton说

多方法允许开放扩展;其他人可以将您的多方法分派扩展到任意表达式上。 cond表达式不适合其他人甚至您自己的代码扩展。

但是在我看来,“开放扩展”和“封闭扩展”的含义对我来说一点也不清楚,因为在我看来,多方法和cond表达式都可以很容易地进行编辑或扩展。

所以...为什么不应该用cond表达式替换Clojure中的多重方法?

或者,等效地,使用多方法比使用cond更好或更优雅?

诚实的noobie问题:为什么不应该用cond表达式简单地替换Clojure中的多重方法? (请记住,我是Clojure的新手,在看完简单的...

clojure polymorphism conditional-statements
1个回答
1
投票

这里的重点是“允许开放扩展”。任何人都可以添加新您的多方法调度-cond是硬编码的:新的调度必须被添加到cond代码中。

© www.soinside.com 2019 - 2024. All rights reserved.