Clojure 在其他项目中使用读取器文本

Clojure 在其他项目中使用读取器文本,clojure,Clojure,我在项目的data\u readers.clj文件中有我的reader文本,一切正常。如果我创建了一个新项目,我可以使用我在依赖库中创建的读卡器文本吗?我看不到使用/需要读卡器文本的方法 例如,如果我有一个data\u readers.clj文件: {ml/foo mylib.core.foo} 我可以从一个单独的项目中执行一些参数吗?在需要库之后,您可以通过多种方式执行: 1) 绑定*数据读取器* (ns mylib.core) (def foo identity) (binding [*d

我在项目的
data\u readers.clj
文件中有我的reader文本,一切正常。如果我创建了一个新项目,我可以使用我在依赖库中创建的读卡器文本吗?我看不到使用/需要读卡器文本的方法

例如,如果我有一个
data\u readers.clj
文件:

{ml/foo mylib.core.foo}

我可以从一个单独的项目中执行一些参数吗?

在需要库之后,您可以通过多种方式执行:

1) 绑定
*数据读取器*

(ns mylib.core)
(def foo identity)
(binding [*data-readers* (assoc *data-readers* 'ml/foo mylib.core/foo)]
  (read-string "#ml/foo arg")) ;;=> arg
此外,您可以为所有标记绑定
*默认数据读取器fn*
。看

赞成:局部影响,建议两个变量都标记为动态。 相反:不适用于
clojure.edn

2) alter
clojure.core/default数据读取器

(alter-var-root #'clojure.core/default-data-readers assoc 'ml/foo mylib.core/foo)
(clojure.edn/read-string "#ml/foo arg") ;;=> arg
(read-string "#ml/foo arg")             ;;=> arg 
Pro:与
clojure.edn
一起使用。 反面:全局突变