Clojure 2024状态调研!中分享您的想法。

欢迎!请查阅关于页面获取更多关于这个工作方式的信息。

+1投票
文档
参数列表

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

docstring

bq. 创建并安装一个与dispatch-value相关联的多方法的新方法。

这个docstring存在一些问题,使得理解起来比较困难

1. 参数{{& fn-tail}}没有文档说明。{{& fn-tail}}的类型/形状是什么。我也在参考指南中看不到任何提及 - https://clojure.org/reference/multimethods
2. docstring和arglists在multimethod和multifn的名称上存在冲突。
3. docstring和arglists在dispatch-value和dispatch-val的名称上存在冲突。

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

8 答案

0投票

评论者:alexmiller

这里的fn-tail意味着“可以作为函数传递的额外参数”,这包括函数名,所以这是支持的。

0投票

评论者:marc

添加补丁

0投票

评论者:alexmiller

我建议将代码从multifn改为multimethod,而不是将docstring的multimethod改为multifn。其他看起来都还好。

0投票

评论者:marc

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

0投票

评论者:alexmiller

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

0投票

评论者:marc

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

我未在文档字符串中将 {{multimethod}} 更改为 {{multifn}}。我相信即使该参数未记录,{{multimethod}} 名称也更加清晰。

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

0投票

评论者:alexmiller

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

0投票
参考:[CLJ-2212](https://clojure.atlassian.net/browse/CLJ-2212)(由marc报告)
...