2011-10-06 64 views
5

如何在clojure中实现复合键?例如,如果我有一张地图 姓和名,例如,指向属性列表....我可以制作一张包含两个字段作为关键字的地图吗?如何在clojure中实现复合键?

而与此同时...在Java中,你可以重写“等于”为地图制作非常先进的键......在clojure中如何实现复杂的键?

回答

11

您可以使用任何种类的正确实现equals的对象作为关键。对于clojure来说,它包括所有的集合类型,所以你可以使用标准的clojure集合作为关键。使用双元素向量作为键的示例:

(def foo {[1 2] :bar [3 4] :baz}) 
=> #'user/foo 
(foo [1 2]) 
=> :bar