2024年Clojure现状调查中分享您的想法!

欢迎!请参阅关于页面,以获取更多关于这一机制的信息。

+1
文档
参数列表

bq. (defmethod multifn dispatch-val & fn-tail)

文档字符串

bq. 为关联到分发值的重载方法创建和安装一个新的方法。

这个文档字符串有几个问题,使得它难以理解

1. 未记录参数{{& fn-tail}}。{{& fn-tail}}的类型/形状是什么?在参考指南中也没有提及 - https://clojure.org/reference/multimethods
2. 文档字符串和参数列表在对{{multimethod}}和{{multifn}}的名称上存在冲突。
3. 文档字符串和参数列表在对{{dispatch-value}}和{{dispatch-val}}的名称上存在冲突。

备注:在clojuredocs.org上提到了在方法中允许使用可选名称的提及 https://docs.clojure.org/clojure.core/defmethod#example-542692c7c026201cdc3269cd 但我没有在任何官方文档中看到这一点。我不确定是否支持。

8 答案

0

评论人:alexmiller

这里的fn-tail意味着“像传递给fn的额外参数”,这包括函数名称,因此这是支持的。

0

评论人:marc

添加补丁

0

评论人:alexmiller

与其将文档字符串从多方法变为多函数,我更愿意将代码从多函数变为多方法。除此之外,看起来都很好。

0
答者:

评论人:marc

添加了更新补丁,将参数名改为与文档字符串匹配,而不是反过来。

0
答者:

评论人:alexmiller

我更希望在这里只为dispatch-val的文档字符串做更改(因此文档字符串要改为与代码匹配)。

0
答者:

评论人:marc

只更改文档字符串的补丁。

我没有在文档字符串中将{{multimethod}}改为{{multifn}}。我相信尽管参数没有文档,但{{multimethod}}这个名字更为清晰。

Alex,你能详细说明为什么要更改文档字符串而不是参数名吗?

0
答者:

评论人:alexmiller

我改变了主意,我认为最好只更改文档字符串以匹配参数名。

0
答者:
...