Clojure 两个函数的参数有什么区别?
我想知道以下两个函数的参数向量有什么区别(如果有的话)。我相信凭直觉我能理解发生了什么,但第一件事让我措手不及。多谢各位 从堆栈溢出 foo可以使用一个或两个参数,其中strip csv header只能使用一个参数Clojure 两个函数的参数有什么区别?,clojure,Clojure,我想知道以下两个函数的参数向量有什么区别(如果有的话)。我相信凭直觉我能理解发生了什么,但第一件事让我措手不及。多谢各位 从堆栈溢出 foo可以使用一个或两个参数,其中strip csv header只能使用一个参数 (defn foo ([x] (foo x [])) ; one arg path ([x current] ; two args path (if (= x 0) (apply vector (sort < current))
(defn foo
([x] (foo x [])) ; one arg path
([x current] ; two args path
(if (= x 0)
(apply vector (sort < current))
(recur (dec x) (conj current x)))))
foo可以使用一个或两个参数,其中strip csv header只能使用一个参数
(defn foo
([x] (foo x [])) ; one arg path
([x current] ; two args path
(if (= x 0)
(apply vector (sort < current))
(recur (dec x) (conj current x)))))
只是对Jani Hartikainen回答的补充: 第三类函数参数是变量arity函数:
(def bar [ &any-number-of-args ] (map baz any-number-of-args))
这并不是原始问题的一部分,只是为了完整性的说明。只是对Jani Hartikainen答案的补充: 第三类函数参数是变量arity函数:
(def bar [ &any-number-of-args ] (map baz any-number-of-args))
这并不是原始问题的一部分,只是为了完整起见,请注意。谢谢您的回答。这是一个变量参数签名吗?是的,你可以有一些函数,它们可以像这样被参数数的算术重载。谢谢你的回答。所以这是一个变量参数签名?是的,你可以有一些函数,它们可以像这样被参数数的算术重载。