我过去使用过erlang,它具有一些非常有用的功能,例如模式匹配功能或“功能保护器”。来自erlang docs的示例是:
fact(N) when N>0 ->
N * fact(N-1);
fact(0) ->
1.
但这可以扩展为一个更复杂的示例,其中参数的形式与其中的值匹配。
Clojure中有类似的东西吗?
最佳答案
在core.match(https://github.com/clojure/core.match)库中,正在为实现这一目标而努力。
取决于您要执行的操作,另一种常见方法是使用defmulti / defmethod调度任意函数。请参阅http://clojuredocs.org/clojure_core/clojure.core/defmulti(该页面底部的阶乘示例)
关于clojure - Clojure中的模式匹配功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596980/