clojureを使用してフォルダ内にすべてのファイルを含める方法。clojureを使用してフォルダ内のすべてのファイルを含める方法
は、ここに私のコードです:
(defn LoadFiles[]
(include "utils")
)
(LoadFiles)
しかし、上記のコードは動作しません。
clojureを使用してフォルダ内にすべてのファイルを含める方法。clojureを使用してフォルダ内のすべてのファイルを含める方法
は、ここに私のコードです:
(defn LoadFiles[]
(include "utils")
)
(LoadFiles)
しかし、上記のコードは動作しません。
私が知る限り、クロージャーにはinclude
はありません(私が間違っている場合は私を修正してください)。 これにはuse
またはrequire
を使用してください。
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")))
私は上記のコードを試して、以下のエラーを受け取りました: スレッド "main"の例外java.lang.RuntimeException:シンボルを解決できません:実行!このコンテキストでは、コンパイル:(/ home/user/Projects/Clojure/clojure-1.5.1/file.clj:5:1) –
oh、 'run!'があなたのバージョンのclojure 1.7に追加されました'(dorun(map#(require ...' – leetwinski
) '(load-file" utils/file-one.clj ")'のように使うことができますか?すべてを含める必要があるために設定ファイルをカスタマイズする必要があります私はこの技術の初心者です。 –
多分何かのように:
(defn load-files [dir]
(doseq [f (file-seq (File. dir))
:when (.isFile f)]
(load-file (.getAbsolutePath f))))
(load-files "utils")
私は上記のコードを試して、以下のエラーを受け取りました: スレッド "main"の例外java.lang.IllegalArgumentException:classnameを解決できません:ファイル、コンパイル:(/ home/user/Projects/Clojure/clojure-1.5.1/file.clj:2:23) –
何あなたは「インクルード」を意味しますか?あなたにそれらを要求したいですか?またはコンテンツを読み込みますか? – cfrick
私はファイルからすべての内容をロードしたいです。 –
次に、このようなものに行くでしょう。(フィルタ#(.isFile%)(ファイル - seq(io /ファイル "utils"))) ' – cfrick