#clojure
Вопрос:
Как я могу импортировать функцию в закрытии? Предположим, у меня есть два файла:
test.clj
test2.clj
Я хочу использовать функцию из test2
in test
.
Я попробовал следующее test
, но это не работает:
(namespace user :require test2)
Как я могу импортировать функцию в другой файл?
В основном я хочу сделать `из библиотеки импорт f в python
Ответ №1:
Ваш синтаксис пространства имен немного не в порядке. Я обычно обращаюсь к этой шпаргалке, когда мне нужно напоминание.
Я думаю, что следующий синтаксис вы ищете.
;; In test.clj
(ns test
(:require [test2 :refer [some-symbol-to-import]]))
Ответ №2:
В файле test.clj
:
(ns test
(:require [test2 :as t2]))
(defn myfn [x]
(t2/somefn x)
(t2/otherfn x))
В приведенном выше примере t2
это псевдоним для пространства test2
имен . Если вместо этого вы предпочитаете добавлять указанные символы из пространства имен, используйте :refer
:
(ns test
(:require [test2 :refer [somefn otherfn]]))
(defn myfn [x]
(somefn x)
(otherfn x))
Чтобы ссылаться на все общедоступные символы в пространстве имен, используйте :refer :all
:
(ns test
(:require [test2 :refer :all]))
(defn myfn [x]
(somefn x)
(otherfn x))