定义一个使用可变参数的多重方法,然后对一个具有20多个元素的序列使用apply将失败。
错误取决于是否有恰好21个参数或多于21个参数。
在正常函数定义中未观察到这种行为。
ClojureScript 1.10.439
(defmulti foo (fn ([args]) (first args)))
'foo
(defmethod foo 0 ([args]))
object(link: cljs.core.MultiFn)
(apply foo (range 20))
nil
(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)
(apply foo (range 22))
错误:无效的参数: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 bar ([args]))
'bar
(apply bar (range 100))
nil