当我学习clojure时,我正在尝试构建一个简单的井字游戏,没有ia。我开始使用一种方法来显示板,但它对我来说似乎很丑:我正在使用内部函数,以便使它们成为 show-board 方法的本地函数,这样它就不能在外部实例化。也许是长得不好的原因。
这是功能(按我的意愿工作):
(defn show-board [board]
"Prints the board on the screen.
Board must be a list of three lists of three elements with
:cross for a cross and :circle for a circle, other value for nothing"
(let [convert-elem (fn [elem]
(cond
(= elem :cross) "X"
(= elem :circle) "O"
:other "_"))
convert-line (fn [elems-line]
(reduce str (map convert-elem elems-line)))]
(doseq [line board]
(println (convert-line line)))))
这是一个用例:
(show-board (list (list :cross :circle :none) (list :none :circle :none) (list :cross :none :none)))
对不起,丑陋的代码,这是因为我来自 Java,我是从 Clojure 开始的。(我想我真的会从学习 Clojure 中受益,并用它制作游戏,所以我不能就这样离开它)。
我想简化它的另一个原因是代码维护和可读性。
提前致谢