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]”嵌套在括号中?
为什么这个函数是递归的?
关于如何设计此功能的任何其他语法级别见解?
答案 0 :(得分:4)
我不是百分之百确定你在问什么,但它基本上定义了一个函数,它需要engine
和seed
个参数或engine
,seed
和options
个论点。
如果未指定option
参数,则该函数会创建默认地图{:columns 50 :rows 50 :speed 500 :cellsize 10}
并调用第二种形式。
您必须查看代码以确定应将engine
和seed
设置为什么。
然后你可以把它称为:
(run-game engine seed)
或
(run-game engine seed {:columns 75 :rows 75 :speed 750 :cellsize 15})
这有帮助吗?