我想知道以下两个函数的参数向量中的差异 - 如果有的话。我相信我理解直觉上发生了什么,但第一个让我措手不及。谢谢。
来自Stackoverflow recursion in clojure
(defn foo
([x] (foo x []))
([x current]
(if (= x 0)
(apply vector (sort < current))
(recur (dec x) (conj current x)))))
和我自己的一个职能
(defn strip-csv-header
"Pulls out first row from csv data. If column definitions, those will
be removed; else first row of data will be removed."
[csv-data-all]
(let [csv-data (rest csv-data-all)]
csv-data))
答案 0 :(得分:4)
只是Jani Hartikainen的回答:
第三种类型的函数参数是变量arity函数:
(def bar [ &any-number-of-args ] (map baz any-number-of-args))
这不是原始问题的一部分,只是完整性的注释。
答案 1 :(得分:3)
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)))))