Ho pensato che lo avrebbe fatto use
ma sembra che la mappatura creata nello spazio dei nomi corrente non sia pubblica. Ecco un esempio di quello che vorrei realizzare:Posso riferire un altro spazio dei nomi ed esporre le sue funzioni come pubbliche per gli attuali ns?
(ns my-ns
(:use [another-ns :only (another-fct)]))
(defn my-fct
[]
(another-fct 123)) ; this works fine
Poi ho un altro spazio dei nomi in questo modo:
(ns my-ns-2
(:require [my-ns :as my]))
(defn my-fct-2
[]
(my/another-fct 456)) ; this doesn't work
Vorrei farlo perché another-ns
è una libreria per accedere a un database . Vorrei isolare tutte le chiamate a questa libreria in un singolo spazio dei nomi (my-ns
), in questo modo tutte le funzioni dipendenti dal DB sarebbero isolate in un singolo spazio dei nomi e diventa più semplice passare a un altro DB se necessario.
Alcune delle funzioni di questa libreria vanno bene per me, ma mi piacerebbe aumentare le altre. Diciamo che le funzioni di lettura vanno bene, ma mi piacerebbe aumentare le funzioni di scrittura con alcune convalide.
L'unico modo che vedo finora è quello di codificare manualmente tutti i mapping in my-ns
anche per le funzioni che non riesco ad aumentare.
Ben fatto! Ho cambiato il tuo marchio di accettazione. Grazie. – Damien
Hmm. Utile, ma sembra essere limitato agli spazi dei nomi che contengono solo le funzioni: 'Impossibile prendere il valore di una macro'. –