小编ral*_*nso的帖子

区分记录实例和地图

我正在尝试调用clojure.walk/stringify-keys可能包含记录实例的地图.由于stringify-keys是递归的,它会尝试转换我的记录上的键(因为(map? record-var)是真的),这会导致错误.有没有办法判断var是一个记录而不仅仅是一个Clojure地图?我想提供我自己的stringify-keys记录感知实现.

当前的实现stringify-keys导致以下情况:

(use '[clojure.walk :only [stringify-keys]])

(defrecord Rec [x])    

(let [record (Rec. "foo")
      params {:x "x" :rec record}]
    (stringify-keys params))
Run Code Online (Sandbox Code Playgroud)

这会导致以下异常:UnsupportedOperationException无法创建空:user.Rec user.Rec(NO_SOURCE_FILE:1)

clojure

5
推荐指数
1
解决办法
1100
查看次数

标签 统计

clojure ×1