在clojurescript中记录为地图键

时间:2015-01-27 23:50:17

标签: clojure clojurescript

(defrecord Pot [a])

(def p (Pot. 1))

(def m {p 2})

(m p) ; Returns 2 in both Clojure and Clojurescript

(m (Pot. 1)) ; Returns 2 in Clojure and nil/null in Clojurescript

在Clojure中,使用原始键或新构造的键查找值将返回所需的值。但是,在Clojurescript中,使用新构造的键返回null / nil。在Clojures中使查找工作的最佳方法是什么,就像在Clojure中一样?

1 个答案:

答案 0 :(得分:1)

看起来我必须为clojurescript中的记录实现equals:

(defrecord Pot [a])

(extend-type Pot
  IEquiv
  (-equiv [this that] (and (instance? Pot that) (= (into {} this) (into {} that)))))

适用于此。我原以为Clojurescript会默认为记录实现等号。