Clojure-매크로
어떤 언어로든 Macros인라인 코드를 생성하는 데 사용됩니다. Clojure도 예외는 아니며 개발자에게 간단한 매크로 기능을 제공합니다. 매크로는 코드 생성 루틴을 작성하는 데 사용되며 개발자에게 개발자의 요구에 맞게 언어를 조정할 수있는 강력한 방법을 제공합니다.
다음은 매크로에 사용할 수있는 방법입니다.
데프 매크로
이 함수는 매크로를 정의하는 데 사용됩니다. 매크로에는 매크로 이름, 매개 변수 목록 및 매크로 본문이 있습니다.
통사론
다음은 구문입니다.
(defmacro name [params*] body)
Parameters− 'name'은 매크로의 이름입니다. 'params'는 매크로에 할당 된 매개 변수입니다. 'body'는 매크로의 본문입니다.
Return Value − 없음.
예
이것이 어떻게 사용되는지에 대한 예가 다음 프로그램에 나와 있습니다.
(ns clojure.examples.example
(:gen-class))
(defn Example []
(defmacro Simple []
(println "Hello"))
(macroexpand '(Simple)))
(Example)
산출
위의 프로그램은 다음과 같은 출력을 생성합니다.
Hello
위 프로그램에서 'Simple'매크로가 'println' 'Hello'로 인라인으로 확장 된 것을 볼 수 있습니다. 매크로는 함수와 유사하지만 매크로의 경우 양식에 대한 인수가 평가된다는 점만 다릅니다.
매크로 확장
이것은 매크로를 확장하고 프로그램에서 코드를 인라인으로 배치하는 데 사용됩니다.
통사론
다음은 구문입니다.
(macroexpand macroname)
Parameters − 'macroname'은 확장해야하는 매크로의 이름입니다.
Return Value − 확장 된 매크로.
예
이것이 어떻게 사용되는지에 대한 예가 다음 프로그램에 나와 있습니다.
(ns clojure.examples.example
(:gen-class))
(defn Example []
(defmacro Simple []
(println "Hello"))
(macroexpand '(Simple)))
(Example)
산출
위의 프로그램은 다음과 같은 출력을 생성합니다.
Hello
인수가있는 매크로
매크로를 사용하여 인수를받을 수도 있습니다. 매크로는 여러 인수를 사용할 수 있습니다. 다음 예제는 인수를 사용하는 방법을 보여줍니다.
예
(ns clojure.examples.example
(:gen-class))
(defn Example []
(defmacro Simple [arg]
(list 2 arg))
(println (macroexpand '(Simple 2))))
(Example)
위의 예제는 Simple 매크로에 인수를 배치 한 다음 인수를 사용하여 목록에 인수 값을 추가합니다.
산출
위의 프로그램은 다음과 같은 출력을 생성합니다.
(2 2)