Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure,控制台:println输出不总是可见_Clojure_Console_Output_Println - Fatal编程技术网

Clojure,控制台:println输出不总是可见

Clojure,控制台:println输出不总是可见,clojure,console,output,println,Clojure,Console,Output,Println,主语。有一个工作程序,它基本上是递归地复制文件系统树。不知何故,递归函数内部的println不会显示任何输出 生成相册调用遍历目录;我可以在控制台中看到“10”,但从来没有任何“11”应该是很多。(println“11”)不可能错过执行路径,因为文件会被真正复制(上面的一行)。这不是很好,因为该项目是作为一个控制台应用程序,向用户报告每个复制的文件,以免他怀疑冻结。这不是开玩笑,因为该应用程序旨在将相册上传到手机上 (defn traverse-dir "Traverses the (sou

主语。有一个工作程序,它基本上是递归地复制文件系统树。不知何故,递归函数内部的println不会显示任何输出

生成相册调用遍历目录;我可以在控制台中看到“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))

可能是惰性序列的问题:您构建了一个从未实现的惰性seq,因此代码从未执行过。尝试对
遍历目录的结果调用
doall

(doall (concat (map dir-handler dirs) (map file-handler files))))

您是否在任何地方使用生成相册的结果?还是你打电话就忽略了结果?非常感谢你,尼基塔!就是这样。在我的情况下,我不需要担心性能问题,是吗?@AlexeyOrlov我认为性能很好。您可以通过将映射替换为pmap来进行并行执行的实验。对于大目录来说可能更快。