Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 使用什么数据结构来实现图书馆管理系统_Clojure - Fatal编程技术网

Clojure 使用什么数据结构来实现图书馆管理系统

Clojure 使用什么数据结构来实现图书馆管理系统,clojure,Clojure,我是函数式编程新手,目前正处于《获取Clojure》一书的末尾。由于本书中的大多数示例都涉及图书/图书馆管理,因此我考虑将图书馆管理系统作为一个项目来实施,以帮助我学习和明确这些概念。我想要一些关于什么是保存图书馆的最佳数据结构的建议——我正在考虑的是图书地图矢量或图书地图地图。地图很容易查找。向量也可以快速访问。我在想 {:ISBN {:title "Book title" :edition 1 :publisher "ABC publishing"}} 通过这种方式,将在ISBN号上进行查

我是函数式编程新手,目前正处于《获取Clojure》一书的末尾。由于本书中的大多数示例都涉及图书/图书馆管理,因此我考虑将图书馆管理系统作为一个项目来实施,以帮助我学习和明确这些概念。我想要一些关于什么是保存图书馆的最佳数据结构的建议——我正在考虑的是图书地图矢量或图书地图地图。地图很容易查找。向量也可以快速访问。我在想

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

通过这种方式,将在ISBN号上进行查找,但我也希望使用书名进行查找。但不确定如何查找。非常感谢您的帮助、建议和建议。

您可以使用
clojure.set
中的
索引功能:

(需要“[clojure.set:as set]”)
(def图书馆{:书名:第1版:出版商“ABC出版”:isbn“1234”)
{:标题“A title”:第2版:出版商“123 publishing”:isbn“4321”})
(按isbn定义(集合/索引库[:isbn]))
(按isbn{:isbn“1234})
;; => #{{:书名“书名”,第1版,出版商“ABC出版社”,isbn“1234”}
(按标题定义(集合/索引库[:标题])
(按标题{:标题“A标题”})
;; => #{{:title“A title”,:edition 2,:publisher“123 publishing”,:isbn“4321”}

您的问题可能需要更具体一些。另外,请查找函数
过滤器的示例。嗨,艾伦,我为不清楚而道歉。我想把书存储在数据结构中。包含书籍和每个地图键的地图是用于查找的ISBN编号。但这有一个缺点,我不能用书名查找。如果我没有弄错的话,filter将必须运行所有的图书列表,但我感兴趣的是可以使用图书标题快速查找的内容。您将开始描述一个具有多个索引的数据库。只需按照描述编写,然后编写函数
getbyisbn
getbytitle
。使用
filter
编写其中一个(可能是标题,因为它不是唯一的)。如果你想的话,可以为100本、10万本和10万本书做一些计时。您可能会惊讶于
过滤器的速度。你好,艾伦,谢谢。我会照你的建议去做。我只是还不想使用数据库:)ISBN是一个数字,每本书都是唯一的。或者你有一张地图,上面有每本书的关键字:ISBN,:title等等,然后你把它们放进地图或列表中。或者,您不使用:ISBN作为键,而是使用每个ISBN数字(实际上是一个字符串)作为包含所有书籍的地图中的键。谢谢您的建议。我会试试你的方法