clojure - 使用什么数据结构来实现图书馆管理系统
问题描述
我是函数式编程的新手,目前正在阅读“Getting Clojure”一书。由于书中的大多数示例都涉及书籍/图书馆管理,因此我想将图书馆管理系统作为一个项目来帮助我学习和理清概念。我想就什么是保存图书馆的最佳数据结构提出一些建议-我正在考虑书籍地图的矢量或书籍地图的地图。地图很容易查找。向量也可以快速访问。我在想
{:ISBN {:title "Book title" :edition 1 :publisher "ABC publishing"}}
这样查找将在 ISBN 号上,但我也想使用书名查找..但不知道如何。任何帮助、建议、建议将不胜感激。
解决方案
您可以使用以下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"}}
推荐阅读
- powershell - 如何使用 powershell 脚本将 makefile 变量(CC、CFLAGS 等)设置为终端或 cmd?
- ios - 使用 Apple 自定义按钮登录
- java - 在我的 if 语句中引入方法的正确方法是什么?
- javascript - FlatList 项中的 TextInput
- react-native - How to rerender component after object update?
- selenium - 当我们有多个场景时,Jenkins Allure 报告没有显示所有结果
- xaml - 在 UWP 中,如何跳过 UserControl 及其所有子元素的选项卡键导航?
- python - 在 Python 中的列内转换为 TB
- jenkins - Jenkins 声明式管道:如何从“主动选择反应性参考参数的 Groovy 脚本”调用函数?
- python-3.x - 菜单和菜单项现在显示在 odoo 14 中