什么';clojure中类对象映射和类集合映射的区别是什么?

什么';clojure中类对象映射和类集合映射的区别是什么?,clojure,Clojure,根据,在从映射中选择元素时,有一种约定,即键或映射应首先选择哪个元素。但这些标准根据地图是“类似对象的地图”还是“类似集合的地图”进行区分 使用关键字优先语法访问对象的属性:(:property) 类对象映射) 使用集合优先语法从集合中提取值(或 如果集合可能为nil,则使用get)。(类似集合的地图键) (获取类似于地图键的集合) 如何定义“类似对象的映射”和“类似集合的映射”,以及它们之间的区别是什么?我想说,类似集合的映射是键和值的集合,其中键不一定是关键字,因此,使用键作为函数来提取值是

根据,在从映射中选择元素时,有一种约定,即键或映射应首先选择哪个元素。但这些标准根据地图是“类似对象的地图”还是“类似集合的地图”进行区分

使用关键字优先语法访问对象的属性:(:property) 类对象映射)

使用集合优先语法从集合中提取值(或 如果集合可能为nil,则使用get)。(类似集合的地图键) (获取类似于地图键的集合)


如何定义“类似对象的映射”和“类似集合的映射”,以及它们之间的区别是什么?

我想说,类似集合的映射是键和值的集合,其中键不一定是关键字,因此,使用键作为函数来提取值是行不通的:

(:keyword my-map)
在这种情况下,使用
get

(get my-map keyword)

像map这样的对象,比如记录,有表示属性的键和值,关键字是专用的。

我想说像map这样的对象是状态的封装或更高级别的数据类型,其中字段的名称、数量和类型是预先确定的

(def rectangle {:length 7, :width 12, :color "#0000FF"})
在这种情况下,通过关键字
(:length rectangle)
进行访问是非常自然的

我对集合类型映射的想法是,它们往往是同质集合,您不知道数字,也不知道将出现哪些键。想象一下,一张地图正在统计音乐收藏中出现的流派(
{:kpop 19,:smooth jazz 7,:classic rock 134,…}

然后,至少根据《风格指南》,使用

(genre-count :punk)

除了
(:朋克流派计数)

学习Clojure指南还讨论了地图的两种不同用途:从不同角度提出相同的问题:
(genre-count :punk)