私はこの本でプログラミングすることを勉強しようとしていますClojure for the Brave and True(CFTBAT)です。クラッシュコースの終わりに、著者はClojureでループを説明するための小さなプログラムを作成します。プログラムのループと再帰の部分を説明するために、著者はloop
を使用して小さな例を書いてから、loop
を通常の関数定義に置き換えることができます。ClojureとClojureによる再帰と勇気のための
この正常な関数定義の例はわかりません。ここでは、コードは次のとおりです。機能recursive-printer
の引数がどこにあるか私が見ることができないので
(defn recursive-printer
([]
(recursive-printer 0))
([iteration]
(println iteration)
(if (> iteration 3)
(println "Bye!")
(recursive-printer (inc iteration)))))
(recursive-printer)
私は、コードを理解していません。 Clojureでは、関数の引数はカッコで囲まれ、カッコはカッコで囲まれています。したがって、この例では、引数は空の引数[]
とiteration
になります。しかし、なぜそれらもかっこの間に置かれますか?
とは何ですか(recursive-printer 0)
関数呼び出しでは、関数自体が呼び出されますか?
誰かがこのコードの仕組みを私に説明できれば、それは非常に感謝しています。
2つの異なる引数リストがあります。 1つの '[]' - 引数なしで呼び出された場合を処理するコードと、1つの引数を指定して呼び出されたときに処理する1つの '[iteration]'です。 –
ところで、この本はオンラインで入手可能なので、リンクが傷ついていない可能性があります。ウェブ版はページごとに指向していないので、「63ページ」はそれを大いに利用している人を助けません。 –
「Arity Overloading」の第3章を参照してください。 –