clojure,莱宁的主要课程(康威的生命游戏)

时间:2012-03-11 17:54:46

标签: syntax clojure conways-game-of-life

你好!我正在运行Conway的生活游戏 - 但我想我必须在这里修改原始版本:https://github.com/sebastianbenz/clojure-game-of-life以引用field.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]”嵌套在括号中?

  • 为什么这个函数是递归的?

  • 关于如何设计此功能的任何其他语法级别见解?

1 个答案:

答案 0 :(得分:4)

我不是百分之百确定你在问什么,但它基本上定义了一个函数,它需要engineseed个参数或engineseedoptions个论点。

如果未指定option参数,则该函数会创建默认地图{:columns 50 :rows 50 :speed 500 :cellsize 10}并调用第二种形式。

您必须查看代码以确定应将engineseed设置为什么。

然后你可以把它称为:

(run-game engine seed)

(run-game engine seed {:columns 75 :rows 75 :speed 750 :cellsize 15})

这有帮助吗?