0

我遵循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) 时,会使用 EDN 中定义的集合调用反向阅读器...如何将 myCustomObject 从 getContent 传递给函数 reverse-reader ?

提前感谢您的帮助。

4

1 回答 1

1

根据您的评论,您似乎想在以下位置添加一个参数reverse-reader并创建一个新函数作为标签阅读器getContent

(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)))
于 2019-11-29T01:22:48.443 回答