Я пытаюсь сделать функцию clojure, которая возвращает файлы в каталоге, который изменился сегодня. Это часть функциональности => дайте мне все файлы, которые были изменены сегодня, прокрутите файлы и найдите конкретное значение. Перечислите как файл, так и строку со значением.Функция clojure для возврата файлов в каталог
Я получил парсинг + листинг строк/файлов, а также «измененные файлы», однако я изо всех сил пытаюсь объединить эти два.
Функция я разработал так далеко, чтобы найти измененные файлы является:
(defn returnfilelist
"returns all the files changed today in a directory"
[d]
(def dir (io/file d))
(def files (for [file (file-seq dir) :when (= (datetostr (Date.(.lastModified file))) (datetostr (new Date))) ](str file )))
(doseq [f files] (println f))) ;; <==== this indeed shows the files changed today...
Я создал функцию datetostr сделать фактическое сравнение по датам:
(defn datetostr [date]
(str (.format (java.text.SimpleDateFormat. "yyyyMMdd")(.getTime date))))
Эта функция действительно перечисляет все файлы были изменены сегодня. Что я хотел бы сделать сейчас передать «файлы» в функции как:
(defn readdir [d]
(ff/returnfilelist d)) ;; more to add...
для дальнейшей обработки.
Я был бы признателен за помощь в этом вопросе, я, вероятно, наблюдаю за чем-то простым, но он продолжал меня прослушивать пару часов. Я искал в документации clojure и в Интернете, но я не понял правильное выражение поиска, чтобы получить ответ.
Направление достаточно, мне нравится учиться, и я довольно новичок в программировании clojure.
Спасибо YosemiteMark за ответ. Я не знал, как вернуть стоимость и использовать ее. Так как все три человека сделали один и тот же комментарий о let, filter и idiom, мне нужно больше поработать над этим. Сначала я буду понимать ваш код, чтобы понять, что пошло не так в моем коде, после чего я рассмотрю два других, чтобы узнать больше о структуре языка clojure. – Jos