Можно ли переименовать пространство имен, которое уже загружено?Переименование пространства имен в Clojure
В моем случае у меня есть Clojure скрипт с пространством имен, скажем main-xxx
, а также множество других сценариев, которые используют main
пространство имен (изменяя их не представляется возможным, main
и main-xxx
Пространства имен имеют одни и те же функции, но с различными реализациями).
Что бы я хотел сделать, это сделать что-то вроде (alias 'main 'main-xxx)
- но для того, чтобы это сработало, мне пришлось бы звонить alias
в каждом скрипте (что не может быть сделано).
Любые идеи?
Я не знаю, можно ли переименовать пространство имен, и если бы это было возможно, я думаю, что это была бы плохая идея. Вы можете использовать 'in-ns',' unalias' и 'alias' для изменения сопоставлений пространства имен в ns, которые вы не можете редактировать, но это все еще низкое решение для простое создание новой версии пространства имен (даже если вы не можете отредактируйте его, вы можете вручную внести измененную версию, которую можно редактировать). – noisesmith
Да, мне понадобится псевдоним «global» или «inherited». Но, если я правильно понимаю, таких вещей нет в Clojure. –
Прагматично, я думаю, вы могли бы использовать протоколы, чтобы получить то, что вы хотите - если код написан с точки зрения функций какого-либо протокола, тогда клиент может поменять реализацию этого протокола по своему усмотрению. – noisesmith