如果这个问题是微不足道的,我很抱歉,但是一些谷歌搜索并没有把我带到任何地方。defmulti
和的一般语法是defmethod
什么?我可以编写简单的多方法,但我不确定我可以将文档字符串、前后条件、元数据等放在哪里。
我实际上对 ClojureScript 比对 Clojure 更感兴趣,所以如果两者之间存在差异,请告诉我。
如果这个问题是微不足道的,我很抱歉,但是一些谷歌搜索并没有把我带到任何地方。defmulti
和的一般语法是defmethod
什么?我可以编写简单的多方法,但我不确定我可以将文档字符串、前后条件、元数据等放在哪里。
我实际上对 ClojureScript 比对 Clojure 更感兴趣,所以如果两者之间存在差异,请告诉我。
在 REPL 中,您可以使用doc
函数来获取函数参数和(大多数情况下)选项的解释。对于 ClojureScript,这两个函数是宏,这意味着它们会在编译时扩展,并且应该与常规 Clojure 中的行为完全相同。也就是说,只要 ClojureScript 可以处理宏生成的代码。
user=> (doc defmulti)
-------------------------
clojure.core/defmulti
([name docstring? attr-map? dispatch-fn & options])
Macro
Creates a new multimethod with the associated dispatch function.
The docstring and attribute-map are optional.
Options are key-value pairs and may be one of:
:default the default dispatch value, defaults to :default
:hierarchy the isa? hierarchy to use for dispatching
defaults to the global hierarchy
nil
user=> (doc defmethod)
-------------------------
clojure.core/defmethod
([multifn dispatch-val & fn-tail])
Macro
Creates and installs a new method of multimethod associated with dispatch-value.
nil
在Clojuredocs:defmulti,defmethod。
如果您没有找到足够详细的示例,您可以考虑添加自己的示例(一旦您回答了所有问题)。