안녕 얘들 아! Conway의 삶의 게임을 실행하고 있습니다. 그러나 project.clj
파일에 field.clj
(run.clj
이 아닌)을 참조하는 https://github.com/sebastianbenz/clojure-game-of-life을 원래 버전으로 수정해야한다고 생각합니다. 이렇게 한 다음 실행하여 게임을 시작할 수 있습니다.clojure의 메인 클래스, leiningan (콘웨이의 인생 게임)
그러나 입력 인수에 대한 설명이없는이 메서드는 충돌합니다.
따라서 제 질문은 : 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))))
UPDATE _
이유는 "[엔진 씨]"는 괄호 안에 중첩?
이 함수는 왜 재귀 적입니까?
이 기능의 설계 방법에 대한 다른 구문 수준의 통찰력은 무엇입니까?
아하 - 이제 알았습니다 - 이것은 다형 함수입니다 ... 그래서 내가 얼마나 많은 args를 putted에 따라 다른 기능 구현이 트리거됩니다. 이 구문을 사용하여 다형 함수로 여러 함수를 정의 할 수 있다는 것을 알지 못했습니다. – jayunit100
이것은 다형성이 일반적으로 정의되는 것과 관련이 있다고 생각하지 않습니다. 선택적 인수가있는 함수 일뿐입니다. – amalloy