Próbuję wywołać clojure.walk/stringify-keys
na mapie, która może zawierać wystąpienia rekordów. Ponieważ stringify-keys jest rekurencyjne, próbuje przekonwertować klucze w moim rekordzie (ponieważ (map? record-var)
jest prawdziwe), co powoduje błąd. Czy istnieje sposób, aby stwierdzić, czy var jest rekordem, a nie tylko mapą Clojure? I Chciałbym zapewnić moją własną implementację stringify-keys
, która jest zdalna.Rozróżnianie instancji rekordów z mapy
Obecna implementacja stringify-keys
powoduje następujące:
(use '[clojure.walk :only [stringify-keys]])
(defrecord Rec [x])
(let [record (Rec. "foo")
params {:x "x" :rec record}]
(stringify-keys params))
Powoduje następujący wyjątek: UnsupportedOperationException Nie można utworzyć pusty: user.Rec user.Rec (NO_SOURCE_FILE: 1)