Subj. Есть рабочая программа, которая рекурсивно копирует деревья файловой системы. Каким-то образом println изнутри рекурсивной функции не будет выводить никакого вывода.Clojure, консоль: вывод println не всегда отображается
строительный альбом звонки traverse-dir; Я вижу «10» в консоли, но никогда никаких «11» - их не должно быть много. (println "11") не может пропустить путь выполнения, так как файлы действительно копируются (строка выше). Это не очень приятно, так как проект подразумевается как консольное приложение, сообщающее пользователю каждый скопированный файл, чтобы он не подозревал о замораживании. Это не шутка, потому что приложение предназначено для загрузки альбомов на мобильные телефоны.
(defn traverse-dir
"Traverses the (source) directory, preorder"
[src-dir dst-step]
(let [{:keys [options arguments]} *parsed-args*
dst-root (arguments 1)
[dirs files] (list-dir-groomed (fs/list-dir src-dir))
dir-handler (fn [dir-obj]
"Processes the current directory, source side;
creates properly named directory destination side, if necessary"
(let [dir (.getPath dir-obj)
step (str dst-step *nix-sep* (fs/base-name dir-obj))]
(fs/mkdir (str dst-root step))
(traverse-dir dir step)))
file-handler (fn [file-obj]
"Copies the current file, properly named and tagged"
(let [dst-path (str dst-root dst-step *nix-sep* (.getName file-obj))]
(fs/copy file-obj (fs/file dst-path))
(println "11")
dst-path))]
(concat (map dir-handler dirs) (map file-handler files))))
(defn build-album
"Copy source files to destination according
to command line options"
[]
(let [{:keys [options arguments]} *parsed-args*
output (traverse-dir (arguments 0) "")]
(println "10")
output))
Используете ли вы результат наращивания альбома в любом месте? Или вы называете это и игнорируете результат? – noisesmith