1

次の2つの関数の引数ベクトルの違い(もしあれば)は何だろうと思います。私は直感的に何が起こっているのか理解していると思いますが、最初のものは私を不意を突かれた。ありがとうございました。

clojureでのStackoverflow再帰から

(defn foo
  ([x] (foo x []))
  ([x current]
     (if (= x 0)
       (apply vector (sort < current))
       (recur (dec x) (conj current x)))))

と私自身の機能の1つ

(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))
4

2 に答える 2

4

ヤニ・ハルティカイネンの答えへの単なる追加:

3番目のタイプの関数の引数は、可変アリティ関数です。

(def bar [ &any-number-of-args ] (map baz any-number-of-args))

これは実際には元の質問の一部ではなく、完全を期すためのメモにすぎません。

于 2012-06-12T16:55:10.983 に答える
3

foo1つまたは2つのパラメーターで動作し、1つのパラメーター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)))))
于 2012-06-12T13:45:44.283 に答える