如果参数是一个符号,则返回它。如果参数是列表,则调用另一个方法。
Clojure 新手,找不到规范的方法。在 Python 中,人们可以这样做:
def return_on_arg_type(arg):
if type(arg) is str:
return arg
if type(arg) is list:
return another_method(arg)
也许我可以使用多种方法,但如何匹配参数的类型,以及如何匹配 Clojure 中可接受的类型?
最佳答案
Clojure 中本质上有 3 种调度方法:
- 按照 Alan 的描述,将
cond
与谓词(即返回 true 或 false 且通常名称以?
结尾的方法)结合使用。 - 使用根据第一个参数的类型进行调度的协议(protocol)。这方面的引用文档位于 https://clojure.org/reference/protocols
- 多种方法。您可以将 Multimethods 视为一种可编程的调度方法。他们可以做的不仅仅是查看参数的类型,还可以查看参数、计算向量参数上的元素等等。规范文档位于https://clojure.org/reference/multimethods
看看Clojure multimethods vs. protocols关于多方法与协议(protocol)的简短讨论。
关于clojure - Clojure 中基于参数类型返回的规范方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57461983/