상단에 모두 표시하지 않고 도우미 기능을 파일 맨 아래에 유지하는 방법을 찾고 있습니다.클로저로 도우미 기능을 자동으로 선언합니다.
하나의 해결책은 현재 파일에서 defn- 매크로를 통해 생성 된 모든 함수의 이름을 가져 와서 선언 호출에서 감싸는 "declare-helpers"함수를 작성하는 것입니다.
나는 그 이름을 붙잡는 더 나은 방법에 대해 묻고 있습니다.
* 편집 *
나는이 있지만, 다음 코드는 내가 단지 도우미에 적용하는 것이
참고 원하는 "dehfn"매크로
으로 정의 기능을 무엇을 할 것으로 보인다 나쁜 관행을 알고;define helper function
(defmacro dehfn [name & body]
`(defn- ~name [email protected]))
(defmacro declare-helpers []
`(declare [email protected](map symbol
(re-seq #"(?<=dehfn\s)[a-zA-Z+!\-_?0-9*~#@''`/.$=]*(?=\s)"
(slurp (str "src/" *file*))))))
지금 당신은이 작업을 수행 할 수 있습니다
(declare-helpers)
(defn hello-user [name] (greet name))
(dehfn greet [name] (str "Hello my dear " name))
왜 그렇게하고 싶습니까? 맨 아래에 사용되는 맨 위에있는 함수를 작성하는 것은 가독성을 높이는 간단한 방법입니다. 결국, 사람들은 여전히 위에서 아래로 코드를 읽습니다. 함수가 API에 노출되어 있지 않거나 ns의 퍼블릭이 아니기 때문에, 소스 파일을 열 때 독자가 관심을 가지는 내용의 중요한 부분이기 때문에 중요성이 덜 중요합니다. –