2
내가 작업하고있는 Clojure 연습에서는 여러 가지 다중 메소드가 있으며, 모두가 identity
을 디스패치 함수로 사용한다. 예를 들어 : 그들 모두 파견에 대해 동일한 identity
기능을 사용하기 때문에Clojure : 기호 목록에서 다중 방법을 정의 하시겠습니까?
(defmulti amount identity)
(defmulti bottles identity)
(defmulti pronoun identity)
(defmulti action identity)
(defmulti pred identity)
, 난 그냥 이름을 반복하고 defmulti
호출을 반복하는 대신에 각각의 이름을 defmulti
를 호출하고 싶습니다. 나는 defmulti
가 나중에 multimethod 이름 중 어떤 defmethod
를 사용할 때와 같은 적절한 효과를 가지고 있지 않지만, 내가 같은 오류가 발생하는대로 보인다 수행 할 때, 그러나
(doseq [m '(amount bottles pronoun action pred)]
(defmulti m identity))
: 나는이 시도
(defmethod amount 0 [n] "whatever")
CompilerException java.lang.RuntimeException: Unable to resolve symbol: amount in this context, compiling:(NO_SOURCE_PATH:1:1)
심볼 또는 이름 목록을 반복하고 각각에 대해 defmulti
을 호출 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까? 당신이 필요한 것은 defmulti
이상 감싸고 수행하는 매크로를 만들 수 있습니다
은의 바운드 값이 그 심볼이'의 첫 번째 인수로 m'됩니다 매크로 아니다 'doseq'. 'dosq'가 실제로하는 일은 단지 다중 방법'm'을 여러 번 정의하는 것입니다. –