こんにちは、みんな!私はコンウェイの人生ゲームを実行していますが、元のバージョンをここで変更する必要があったと思います: https://github.com/sebastianbenz/clojure-game-of-lifefield.clj
ファイルで(ではなくrun.clj
)を参照するようにしproject.clj
ます。その後、実行してゲームを開始できます
repl> (run-game)
ただし、入力引数に関するコメントがないこのメソッドではクラッシュします。
したがって、私の質問は次のとおりです。Clojure 構文の観点から、このフォーム (実行するように見える) は何ですか?
(defn run-game
([engine seed]
(run-game engine seed
{:columns 50 :rows 50 :speed 500 :cellsize 10}))
([engine seed options]
(let [panel (field-panel engine seed options)
frame (field-frame panel)
timer (Timer. (options :speed) panel)]
(.start timer))))
更新_
「[engine-seed]」が括弧でネストされているのはなぜですか?
なぜこの関数は再帰的ですか?
この関数がどのように設計されているかについて、他の構文レベルの洞察はありますか?