Pensé que use
lo haría, pero parece que el mapeo creado en el espacio de nombres actual no es público. Aquí está un ejemplo de lo que me gustaría lograr:¿Puedo referir otro espacio de nombres y exponer sus funciones como públicas para las ns actuales?
(ns my-ns
(:use [another-ns :only (another-fct)]))
(defn my-fct
[]
(another-fct 123)) ; this works fine
entonces tengo otro espacio de nombres como esto:
(ns my-ns-2
(:require [my-ns :as my]))
(defn my-fct-2
[]
(my/another-fct 456)) ; this doesn't work
me gustaría hacer eso porque another-ns
es una biblioteca para acceder a una base de datos . Me gustaría aislar todas las llamadas a esta biblioteca en un solo espacio de nombres (my-ns
), de esta manera todas las funciones dependientes de DB se aislarían en un solo espacio de nombres y será más fácil cambiar a otro DB si es necesario.
Algunas de las funciones de esta biblioteca son buenas para mí, pero me gustaría aumentar otras. Digamos que las funciones de lectura están bien, pero me gustaría aumentar las funciones de escritura con cierta validación.
La única forma que veo hasta ahora es codificar manualmente toda la asignación en my-ns
incluso para las funciones que no aumenten.
¡Bien hecho! Cambié la marca de aceptación para ti. Gracias. – Damien
Hmm. Útil, pero parece estar limitado a los espacios de nombres que contienen funciones por sí solos: 'No se puede tomar el valor de una macro'. –