эквивалент звездочки Java (*) в clojure? - PullRequest
3 голосов
/ 28 ноября 2011

Для компиляции всего набора классов мы пишем "Library / *" (на Java).что эквивалентно этому clojure?
Компиляция с использованием REPL.

1 Ответ

3 голосов
/ 28 ноября 2011

Обычно у вас есть 3 способа загрузки файлов / библиотек в REPL:

  • Используйте
  • Требовать
  • Импорт

Использование является самым мощным (и также самым опасным).

Require сообщает REPL, что вы собираетесь использовать элементы из этого пространства имен. Например:

(require 'clojure.string)

позволяет сделать:

(clojure.string/split "hi, reader" #",")

Use делает то же самое, что и Require, однако use также включает все переменные ns в ваше текущее пространство имен.

Импорт используется с библиотеками Java, например:

(import 'java.util.Date)

так что вы можете

(Date.)

Require (и, следовательно, Use) использует ряд других функций «под капотом»:

(require '[clojure.test :as test] :verbose)
 (clojure.core/load "/clojure/template")
 (clojure.core/load "/clojure/walk")
 (clojure.core/in-ns 'clojure.template)
 (clojure.core/alias 'walk 'clojure.walk)
 (clojure.core/in-ns 'clojure.test)
 (clojure.core/alias 'temp 'clojure.template)
 (clojure.core/load "/clojure/test")

Таким образом, вы также можете смоделировать запрос, выполнив эти шаги вручную.

Еще одна интересная функция - файл загрузки

(load-file "src/mylib/core.clj")

и нагрузка

(load "address_book/core")

они загружают код Clojure из ресурсов в classpath. Путь интерпретируется как относительный путь к классу, если он начинается с косой черты или относительно корня каталог для текущего пространства имен в противном случае.

Если вы хотите загрузить что-нибудь более сложное, чем, скажем, 2 или 3 файла, я настоятельно рекомендую использовать Leiningen.

изменить: вы также можете использовать:

(add-classpath "file:///home/../.../src/") 

Чтобы легко добавлять файлы в путь к классам, чтобы вы могли использовать их с require.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...