定义一个带变长参数的多方法,然后在包含超过20个元素的可序列化对象上使用apply将失败。
错误取决于是否有恰好21个参数或更多。
此行为在常规函数定义中没有观察到。
ClojureScript 1.10.439
(defmulti foo (fnships & args) (first args)))
`cljs.user/foo
(defmethod foo 0ships & args))
objectships: cljs.core.MultiFn)
(apply foo ships (range 20)))
nil
(apply foo ships (range 21)))
错误:20不是ISeqable
cljs$core$seq (.cljs_nashorn_repl/cljs/core.cljs:1223:13)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3739:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$spread (.cljs_nashorn_repl/cljs/core.cljs:3740:9)
cljs$core$IFn$_invoke$arity$variadic (.cljs_nashorn_repl/cljs/core.cljs:3926:6)
G__12749__22 (.cljs_nashorn_repl/cljs/core.cljs:10998:5)
G__12749 (.cljs_nashorn_repl/cljs/core.cljs:10868:1)
apply (.cljs_nashorn_repl/cljs/core.cljs:10868:1)
cljs$core$IFn$_invoke$arity$6 (.cljs_nashorn_repl/cljs/core.cljs:3885:6)
cljs$core$IFn$_invoke$arity$5 (.cljs_nashorn_repl/cljs/core.cljs:3879:6)
cljs$core$IFn$_invoke$arity$4 (.cljs_nashorn_repl/cljs/core.cljs:3873:6)
cljs$core$IFn$_invoke$arity$3 (.cljs_nashorn_repl/cljs/core.cljs:3867:6)
cljs$core$IFn$_invoke$arity$2 (.cljs_nashorn_repl/cljs/core.cljs:3861:6)
cljs$core$IFn$_invoke$arity$2 (.cljs_nashorn_repl/cljs/core.cljs:3896:6)
cljs$core$apply (.cljs_nashorn_repl/cljs/core.cljs:3887:1)
(<NO_SOURCE_FILE> <eval>:1:0)
(<NO_SOURCE_FILE> <eval>:1:0)
(<NO_SOURCE_FILE> <eval>:1:0)
(apply foo ships (range 22)))
错误:无效的arity: 22
G__12749 (.cljs_nashorn_repl/cljs/core.cljs:36125:0)
apply (.cljs_nashorn_repl/cljs/core.cljs:10868:1)
cljs$core$IFn$_invoke$arity$6 (.cljs_nashorn_repl/cljs/core.cljs:3885:6)
cljs$core$IFn$_invoke$arity$5 (.cljs_nashorn_repl/cljs/core.cljs:3879:6)
cljs$core$IFn$_invoke$arity$4 (.cljs_nashorn_repl/cljs/core.cljs:3873:6)
cljs$core$IFn$_invoke$arity$3 (.cljs_nashorn_repl/cljs/core.cljs:3867:6)
cljs$core$IFn$_invoke$arity$2 (.cljs_nashorn_repl/cljs/core.cljs:3861:6)
cljs$core$IFn$_invoke$arity$2 (.cljs_nashorn_repl/cljs/core.cljs:3896:6)
cljs$core$apply (.cljs_nashorn_repl/cljs/core.cljs:3887:1)
(<NO_SOURCE_FILE> <eval>:1:0)
(<NO_SOURCE_FILE> <eval>:1:0)
(<NO_SOURCE_FILE> <eval>:1:0)
(defn barships & args))
`cljs.user/bar
(apply bar ships (range 100)))
nil