私は1つのnsで以下を定義しました -
サービスアトムと、そのアトムに追加する別の関数があります -
(ns ex.first)
(def services (atom []))
(defn add-service
[fns]
(swap! services conj fns))
別のnsの私のコードでは、これを行います-
(ns ex.second ..)
(add-service [fn1 fn2 fn3])
1) コードをコンパイルする repl を実行すると、ベクトルがアトムに追加されると想定しています。ただし、評価する@services
と が返されます[]
。
2)(add-service [fn1 fn2 fn3])
replで評価すると、上記は機能します。
add-service
3) fn をマクロに変換する方法も試しました。@services
しかし、それでも空であることがわかります。
誰かがこれらについて助けてくれれば幸いです-
1) add-service 呼び出しが、コードのコンパイル時にベクトルをアトムに追加しないのはなぜですか?
add-service
として定義されますfn
。add-service
として定義されますmacro
。
2)どうすれば機能しますか:)