Установка свойства проекта на небуквальную строку, по-видимому, не работает в leiningen.

Возьмем простой файл проекта:

(defproject sample-clojure-cloudbees "1.0.0-SNAPSHOT" :description "Пример clojure - clojure 1.3 !" :blah "hello")

Когда я читаю (получить проект: бла), я получаю возвращенную строку «привет» - как и ожидалось.

Если я заменю "привет"

:blah (хлюпает "какой-то файл...")

Я получаю сообщение об ошибке, вызванное: java.lang.ClassCastException: clojure.lang.PersistentList не может быть приведен к java.lang.String

Кажется, он не оценивает вещи так, как я ожидаю, есть идеи?


person Michael Neale    schedule 12.10.2011    source источник
comment
Я не совсем уверен, что вы пытаетесь здесь сделать, вот источник defproject, может быть, это поможет? clojuredocs.org/leiningen/leiningen.core/defproject   -  person Paul    schedule 12.10.2011


Ответы (1)


defproject - это макрос, который он не будет оценивать (хлюпать...), если вы не скажете ему об этом,

замена,

:blah (slurp "some file...")

с участием,

:blah ~(slurp "some file...")

даст вам содержимое файла.

person Hamza Yerlikaya    schedule 12.10.2011
comment
О, фантастика. Я думал, что это что-то вроде этого. Я запишу это как урок, который не забуду ;) Как ни странно, я почти уверен, что видел, как это работало в прошлом - я думаю, я, вероятно, не ожидал, что это будет строка, и просто не видел ошибку вроде в этом случае, когда я пошел, чтобы использовать его. - person Michael Neale; 13.10.2011