2016-12-22 20 views
1

clojureを使用してフォルダ内にすべてのファイルを含める方法。clojureを使用してフォルダ内のすべてのファイルを含める方法

は、ここに私のコードです:

(defn LoadFiles[] 
    (include "utils") 
) 
(LoadFiles) 

しかし、上記のコードは動作しません。

+0

何あなたは「インクルード」を意味しますか?あなたにそれらを要求したいですか?またはコンテンツを読み込みますか? – cfrick

+0

私はファイルからすべての内容をロードしたいです。 –

+0

次に、このようなものに行くでしょう。(フィルタ#(.isFile%)(ファイル - seq(io /ファイル "utils"))) ' – cfrick

答えて

2

私が知る限り、クロージャーにはincludeはありません(私が間違っている場合は私を修正してください)。 これにはuseまたはrequireを使用してください。

この1つは、おそらく( utilsトップレベルにあるすべての.cljファイルに対して、しかし、あなたは簡単にそれが再帰的であることを拡張することができます)動作するはず

(defn list-sources [path] 
    (map #(str path "." (second (re-matches #"^(\w+)\.clj$" (.getName %)))) 
     (filter #(.isFile %) (file-seq path)))) 

(run! #(require (vector (symbol %) :refer :all)) 
     (list-sources (java.io.File. "utils"))) 
+0

私は上記のコードを試して、以下のエラーを受け取りました: スレッド "main"の例外java.lang.RuntimeException:シンボルを解決できません:実行!このコンテキストでは、コンパイル:(/ home/user/Projects/Clojure/clojure-1.5.1/file.clj:5:1) –

+0

oh、 'run!'があなたのバージョンのclojure 1.7に追加されました'(dorun(map#(require ...' – leetwinski

+0

) '(load-file" utils/file-one.clj ")'のように使うことができますか?すべてを含める必要があるために設定ファイルをカスタマイズする必要があります私はこの技術の初心者です。 –

1

多分何かのように:

(defn load-files [dir] 
    (doseq [f (file-seq (File. dir)) 
      :when (.isFile f)] 
    (load-file (.getAbsolutePath f)))) 

(load-files "utils") 
+0

私は上記のコードを試して、以下のエラーを受け取りました: スレッド "main"の例外java.lang.IllegalArgumentException:classnameを解決できません:ファイル、コンパイル:(/ home/user/Projects/Clojure/clojure-1.5.1/file.clj:2:23) –

関連する問題