2024 Clojure 状态调查!上分享您的想法。

欢迎!有关如何使用本页面的更多信息,请参阅关于页面。

0
ClojureScript

您好,

以下代码在 ClojureScript 中会发出一个不应出现的警告

(defrecord A [])
(A. {:tag 1} nil)
WARNING: Wrong number of args (2) passed to A at line 1 <cljs repl>

该文档字符串声明

将定义两个构造函数,一个接受指定的字段
后面是元数据映射(如果没有则为 nil)和一个扩展字段映射
(如果没有则为 nil),另一个只接受字段(使用 nil 作为
元数据和扩展字段)。

并且元数据已经正确应用

(meta (A. {:tag 1} nil))
WARNING: Wrong number of args (2) passed to A at line 1 <cljs repl>
{:tag 1}

这是由于这里的检查这里

我非常愿意为这个问题提供补丁。

1 个答案

0

被选为最佳答案
 
最佳答案

文档字符串说构造函数将接受:指定的字段 AND 元数据映射 AND 扩展字段映射,因此它应该有 1 个或 3 个参数。您已经传入了 2 个。这应该工作

(meta (A. {:tag 1} nil nil))
在我的例子中,记录有0个“指定字段”。`{:tag 1}`是元数据。即使我使用`(A. {:tag 1} nil nil)`,我依然会收到警告。
明白了,我会提交工单。
...