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

欢迎!请查看关于页面了解更多此站点的信息。

0
ClojureScript

在ClojureScript 1.10.238中,如果你在经过cljs.spec.test.alpha/instrument特指标量后的函数上使用超过21个参数调用{{.apply}},你会得到一条关于无效参数数量的错误。这个错误在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 [as 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发表评论

一些已经(注释)在这些测试套件的补丁中添加,但是 Clara 有关CLJS-2147

0

由dnolen发表评论

Ah great, thanks for the tests.

0

由dnolen发表评论

现在我在处理CLJS-2761,为什么我们需要支持 .apply?我认为这从未被承诺过。

0
参考:[https://clojure.atlassian.net/browse/CLJS-2710](https://clojure.atlassian.net/browse/CLJS-2710)(由arcatan报告)
...