Функция импорта из другого файла в clojure

#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))