#clojure
#clojure
Вопрос:
Как вы можете реализовать составные ключи в clojure? Если у меня есть карта, где имя и фамилия, например, указывают на список атрибутов…. Могу ли я создать карту, содержащую оба поля в качестве ключа?
А тем временем… В Java вы можете переопределить «equals», чтобы создать очень продвинутые ключи для карт… Как сложные ключи реализованы в clojure?
Ответ №1:
Вы можете использовать любой объект, который правильно реализует equals в качестве ключа. Для clojure это включает в себя все типы коллекций, поэтому вы можете просто использовать стандартную коллекцию clojure в качестве ключа. Пример использования двухэлементных векторов в качестве ключей:
(def foo {[1 2] :bar [3 4] :baz})
=> #'user/foo
(foo [1 2])
=> :bar