如何将自定义参数传递给 edn reader?
How do I pass custom parameter to edn reader?
我遵循 clojure 代码
(defn reverse-reader [coll]
(assert (coll? coll) "you can only reverse collections")
(reverse coll)
)
(def custom-readers {'demo/reverse reverse-reader})
(defn getContent
[filename myCustomObject]
(edn/read-string
{:readers custom-readers}
(slurp filename))
)
我正在传递以下 EDN 文件
{
:a 1
:b [1 2 3 4 5]
:c #demo/reverse [5 4 3 2 1]
}
我的问题是:
当我调用 (getContent "ednfilepath" myCustomObject) 时,reverse-reader 被调用并使用 EDN 中定义的集合...我如何将 myCustomObject 从 getContent 传递给函数 reverse-reader?
提前感谢您的帮助。
根据您的评论,您似乎想向 reverse-reader
添加一个参数并创建一个新函数作为 getContent
中的标签 reader:
(defn reverse-reader [coll custom]
...)
(defn get-custom-readers [custom]
{'demo/reverse (fn [c] (reverse-reader c custom))})
(defn getContent
[filename myCustomObject]
(edn/read-string
{:readers (get-custom-readers myCustomObject])
(slurp filename)))
我遵循 clojure 代码
(defn reverse-reader [coll]
(assert (coll? coll) "you can only reverse collections")
(reverse coll)
)
(def custom-readers {'demo/reverse reverse-reader})
(defn getContent
[filename myCustomObject]
(edn/read-string
{:readers custom-readers}
(slurp filename))
)
我正在传递以下 EDN 文件
{
:a 1
:b [1 2 3 4 5]
:c #demo/reverse [5 4 3 2 1]
}
我的问题是: 当我调用 (getContent "ednfilepath" myCustomObject) 时,reverse-reader 被调用并使用 EDN 中定义的集合...我如何将 myCustomObject 从 getContent 传递给函数 reverse-reader?
提前感谢您的帮助。
根据您的评论,您似乎想向 reverse-reader
添加一个参数并创建一个新函数作为 getContent
中的标签 reader:
(defn reverse-reader [coll custom]
...)
(defn get-custom-readers [custom]
{'demo/reverse (fn [c] (reverse-reader c custom))})
(defn getContent
[filename myCustomObject]
(edn/read-string
{:readers (get-custom-readers myCustomObject])
(slurp filename)))