clojure - Clojure中的模式匹配功能?

标签 clojure design-patterns matching

我过去使用过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/

相关文章:

C++ 对象生命周期分析

unit-testing - 如何防止 Clojure 测试之间的符号污染?

clojure - 谁能解释这段代码?

language-agnostic - 哪种设计模式乍看之下最可怕,但实现后却是最美丽的?

r - 如何不陷入 R 的 'lazy evaluation trap'

parameters - 为什么此 F# 函数的参数值似乎变为 0?

python - pywinauto:占用多个应用程序窗口

Java 8 模式匹配?

Emacs 和 Clojure 方法调用层次结构

Clojure 规范强制嵌套映射值