1. ホーム
  2. function

[解決済み] Clojureの関数が可変数のパラメータを取るようにするには?

2023-06-14 11:43:18

質問

私はClojureを学んでいて、可変数のパラメータを取る関数を定義しようとしています (a バリアディック 関数)を定義し、それらを合計しようとしています(そう、ちょうど + プロシージャのように)。しかし、私はそのような関数を実装する方法を知りません。

私ができることは、すべて

(defn sum [n1, n2] (+ n1 n2))

もちろん、この関数は2つのパラメータと2つのパラメータのみを受け取ります。不定数のパラメータを受け付ける(そして処理する)方法を教えてください。

どのように解決するのですか?

一般に、非可換の場合は を適用します。 :

(defn sum [& args] (apply + args))

足し算は可換なので、このようなものもうまくいくはずです。

(defn sum [& args] (reduce + args))

& 原因 args の左側には何もないので、この場合はリスト全体です。 & ).

の代わりなので、明らかにそのようにsumを定義することは意味を持ちません。

(sum a b c d e ...)

と書けばいいのです。

(+ a b c d e ....)