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

欢迎!请参阅关于页面,了解更多关于本站如何工作的情况。

0
ClojureScript

ClojureScript 1.10.238 中,如果您在一个使用 {{cljs.spec.test.alpha/instrument}} 仪器化的函数上调用 {{.apply}} 带有超过 21 个参数,您将收到关于无效参数数目的错误。使用 ClojureScript 1.9.954 不会出现此问题。

`
(require '[cljs.spec.alpha :as s] '[cljs.spec.test.alpha :as stest])

(defn my-fun [& args] (prn :args args))
(s/fdef my-fun :args (s/cat :args (s/* any?)))

(.apply my-fun nil (into-array (range 22)))
;; :args (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21)

(stest/instrument)
(.apply my-fun nil (into-array (range 22)))
;; 错误:无效的参数数:22
;; 在 Function.G__10112 [作为 call] (.../cljs/core.js:6798:7)
;; 在 Function.cljs.core.MetaFn.apply (.../cljs/core.js:6829:24)
;; 在 repl:1:96
`

普通的 {{apply}} 正常工作。

5 回答

0

由 dnolen 制作评论

参见 CLJS-364 & CLJS-365

0

由 aralo 制作评论

其中一些已经被注释(commented out),但已添加到 apply 测试套件补丁中:CLJS-2147

0

由 dnolen 制作评论

Ah great, thanks for the tests.

0

由 dnolen 制作评论

现在我在工作于CLJS-2761问题上,为何我们需要支持.apply?我不认为这曾有过承诺。

0
参考资料:https://clojure.atlassian.net/browse/CLJS-2710(by arcatan所报告)
...