定义带varargs的多方法,然后在包含20个以上元素的序列上使用apply失败。
错误取决于是否有准确21个参数或更多。
在正常函数定义中没有观察到这一行为。
ClojureScript 1.10.439
cljs.user=> (defmulti foo (fn (link: & args) (first args)))
'cljs.user/foo
cljs.user=> (defmethod foo 0 (link: & args))
object(link: cljs.core.MultiFn)
cljs.user=> (apply foo (range 20))
nil
cljs.user=> (apply foo (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)
cljs.user=> (apply foo (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)
cljs.user=> (defn bar (link: & args))
'cljs.user/bar
cljs.user=> (apply bar (range 100))
nil