Допълнителни изходни файлове на проект Clojure

Когато lein настройва проект, се създава файл core.clj заедно с други директории и файлове. Искам да знам дали мога да разделя съдържанието на core.clj в друг изходен файл под

../myproj/src/myproj/

и ако е така, как да получите достъп до тези данни от core.clj.


person octopusgrabbus    schedule 07.11.2012    source източник


Отговори (3)


IIRC (нямам подръка проект за проверка), всичко във вашата src/myproj/ директория е в пространството от имена 'myproj. Така че вашият core.clj файл ще бъде в пространството от имена 'myproj.core. Други файлове ще бъдат в техните собствени пространства от имена в пространството от имена 'myproj (напр. 'myproj.other-file за other_file.clj) и могат да бъдат изтеглени в core.clj, като направите:

(use 'myproj.other-file)

или в ns декларация:

(ns myproj.core
  (:use [myproj.other-file]))
person paul    schedule 07.11.2012

Можете да разделите дефиниции на колкото искате файлове, въпреки че е идиоматично да поставите едно пространство от имена в един файл и обратно.

Вижте http://clojure.org/libs за това как да наименувате и зареждате файлове и пространства от имена. Едно нещо, което трябва да имате предвид е, че тиретата в пространствата от имена се превеждат като долна черта в имената на файловете.

person Joost Diepenmaat    schedule 07.11.2012
comment
Благодаря. Отказвам се от тиретата в пространствата на имената. Имах твърде много проблеми с тях. - person octopusgrabbus; 07.11.2012

project.clj на Leiningen е да дефинира project променлива, която не е нищо повече от карта с ключове, обозначаващи параметрите на проекта (идиом в Clojure е да се използва def[име] за създаване на променлива с името [име], което обикновено е карта - най-основната, но много полезна структура от данни).

Вижте стандартите по подразбиране var в изходния код на Leiningen 2 за настройките по подразбиране.

С това казано, преди да извикате defproject макрос, можете да правите каквото си поискате в project.clj - все пак това е скрипт на Clojure и вашето въображение (и познаване на Clojure) е само това, което може да ви ограничи. Всъщност можете да правите каквото искате с променливата, след като бъде създадена. Мислете за project.clj като за приложение на Clojure за управление на вашия проект.

Като пример, преди профилите да бъдат въведени в Leiningen 2, имаше "трик" да има една единствена променлива с общи зависимости за атрибутите :dependencies и :dev-dependencies. Само да ви предупредя отново - вече не е необходимо в Leiningen 2, тъй като предлага възможност за профили. Прочетете Тестване на вашия проект срещу множество версии на Clojure, ако сте любопитни как е било в миналото.

person Jacek Laskowski    schedule 08.11.2012