根据Clojure's code standards,有一种约定,当从映射中选择元素时,应先行使用键或映射。但是这些标准根据地图是“类似对象的地图”还是“类似收藏的地图”进行区分。
使用关键字优先语法访问对象的属性:(:property 类似对象的地图)
使用集合优先的语法从集合中提取值(或 如果集合可能为nil,请使用get)。 (类似集合的地图关键字) (获取类似收藏的地图密钥)
一个人如何定义“类对象图”和“类集合图”,它们有何不同?
答案 0 :(得分:2)
我想说一个类似对象的映射是状态或更高级别数据类型的封装,其中字段的名称,数量和类型是预先确定的。
(def rectangle {:length 7, :width 12, :color "#0000FF"})
在这种情况下,很自然地可以通过关键字(:length rectangle)
进行访问。
我对集合类型映射的想法是,它们往往是同质集合,在这些集合中,您既不知道数字,也不知道将要显示哪些键。想象一下一个地图,该地图计算了音乐收藏({:kpop 19, :smooth-jazz 7, :classic-rock 134, ...}
)中流派的出现
(def genre-count (count-genres "/data/my-song-list"))
然后,至少根据样式指南,使用来获取单词数是很自然的
(genre-count :punk)
超过(:punk genre-count)
,
答案 1 :(得分:0)
我会说像map这样的集合是键和值的集合,其中键不一定是关键字,因此,使用键作为函数来提取值将不会:
(:keyword my-map)
在这种情况下,请使用get
:
(get my-map keyword)
地图之类的对象(如记录)具有键和值,这些键和值代表属性,而关键字则专用。