#clojure #leiningen
#clojure #leiningen
Вопрос:
Возьмите простой файл проекта:
(defproject sample-clojure-cloudbees «1.0.0-SNAPSHOT»: описание «Образец приложения clojure — clojure 1.3!» : бла «привет»)
Когда я читаю (get project: blah), я получаю возвращенную строку «привет» — как и ожидалось.
Если я заменю «привет»
: бла (выплюнуть «какой-то файл …»)
Я получаю сообщение об ошибке, вызванное: java.lang.ClassCastException: clojure.lang.PersistentList не может быть приведен к java.lang.Строка
Похоже, что он не оценивает вещи так, как я ожидаю, есть идеи?
Комментарии:
1. Я не совсем уверен, что вы пытаетесь здесь сделать, вот
defproject
источник, может быть, это поможет? clojuredocs.org/leiningen/leiningen.core/defproject
Ответ №1:
defproject — это макрос, который он не будет оценивать (slurp …), Если вы не укажете ему,
замена,
:blah (slurp "some file...")
с,
:blah ~(slurp "some file...")
предоставит вам содержимое файла.
Комментарии:
1. О, фантастика. Я думал, что это что-то вроде этого. Я запишу это как урок, который я не забуду 😉 Как ни странно, я почти уверен, что видел, как это работало в прошлом — думаю, я, вероятно, не ожидал, что это будет строка, и просто не увидел ошибки, как в этом случае, когда я начал ее использовать.