方案:我想使用多方法在多個文件中調度和傳播功能。其中一個文件只包含multimethods,爲了使它們可用,我必須手動加載文件。有沒有辦法自動加載文件,而不是顯式加載它?僅加載多方法的文件
這裏有我在做什麼一個簡單的例子:
; app/core.clj
(ns app.core
(:use [app.fruit.core :only [make-fruit]])
(println (:name (make-fruit :banana)))
; app/fruit/core.clj
(ns app.fruit.core)
(defmulti make-fruit identity)
; app/fruit/banana.clj
(ns app.fruit.banana
(:use [app.fruit.core :only [make-fruit]])
(defmethod make-fruit :banana [fruit]
{:name "banana" :color "yellow})
fruit.banana的方法不加載,除非我明確地加載它在app.core,喜歡它增加了:使用組。這似乎打敗了使用multimethod的目的,因爲我仍然必須明確實現它的所有方法。
如果通配名稱空間被允許,那麼這將是微不足道的。按照這個線程http://stackoverflow.com/q/1990714/1552130 – KobbyPemson