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

评论者:alaro

其中一些(已注释)已添加到 apply 测试套件修补程序中:CLJS-2147

0

评论者:dnolen

太好了,感谢你的测试。

0

评论者:dnolen

现在我在处理 CLJS-2761 时,又来看这个问题,为什么我们需要支持 .apply?我觉得这从未被承诺过。

0
...