2016-04-04 10 views
0

我EDN的一個文本文件,其中包含一個函數來創建一個SQUUID轉換:如何使用Clojure的讀者在一個文本文件導入函數的字符串,解決

[ 
{:db/id #db/id[:db.part/people -1001] 
    :people.human/uuid (d/squuid) 
    ... 
] 

我讀這文件到變種使用slurp:

(def seed-data (read-string (slurp "path/to/my-edn-file.edn"))) 

當它被讀入var我想(d/squuid)函數被調用。我相信這與clojure閱讀器有關,但是我堅持在EDN文件中使用正確的標記。謝謝。

回答

0

read-string只讀取表示爲String的表格。如果你要評估他們(和你希望它發生,只要你想的d/squuid被執行),你需要eval表單:

(def seed-data 
    (-> "path/to/my-edn-file.edn" 
     (slurp) 
     (read-string) 
     (eval))) 

安全警告

read-stringeval可能是危險的因爲他們執行代碼。您應該只將它們用於您知道安全的數據(例如,不提供來自外部來源,如網頁表單,外部API等)

相關問題