Какую структуру данных использовать для реализации системы управления библиотекой - PullRequest
1 голос
/ 11 апреля 2019

Я новичок в функциональном программировании и в настоящее время нахожусь в конце книги "Getting Clojure". Поскольку большинство примеров в книге относятся к управлению книгами / библиотеками, я подумал о внедрении системы управления библиотеками как о проекте, который поможет мне изучить и прояснить концепции. Я хотел бы посоветовать, какую структуру данных лучше всего хранить в библиотеке - я имею в виду либо вектор книжных карт, либо карту книжных карт. Карты легко найти. К векторам можно также быстро получить доступ. Я думаю о

{:ISBN {:title "Book title" :edition 1 :publisher "ABC publishing"}}

таким образом, поиск будет осуществляться по номеру ISBN, но я также хотел бы выполнить поиск по названию книги ... но не знаю, как. Любая помощь, предложения, советы будут с благодарностью.

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете использовать функцию index в clojure.set:

(require '[clojure.set :as set])

(def library #{{:title "Book title" :edition 1 :publisher "ABC publishing" :isbn "1234"}
               {:title "A title" :edition 2 :publisher "123 publishing" :isbn "4321"}})

(def by-isbn (set/index library [:isbn]))

(by-isbn {:isbn "1234"})
;; => #{{:title "Book title", :edition 1, :publisher "ABC publishing", :isbn "1234"}}

(def by-title (set/index library [:title]))

(by-title {:title "A title"})
;; => #{{:title "A title", :edition 2, :publisher "123 publishing", :isbn "4321"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...