Vin*_*tDM 3 clojure clojurescript
作为Clojure的新手,矢量(类似数组)和地图(键值对)之间的区别最初对我来说似乎很清楚.
但是,在很多情况下(例如"let"特殊形式和带有关键字参数的函数),矢量用于传递键值对.
let的源代码甚至包括一个检查,以确保向量包含偶数个元素.
我真的不明白为什么使用矢量而不是地图.当我读到集合类型时,我希望映射是以键值格式存储任何信息的首选方式.
任何人都可以解释为什么矢量似乎也是表达键和值对的首选工具?
Clojure IRC频道的精彩人物向我解释了主要原因:地图(哈希)没有订购.
例如,let表单允许反向引用,如果参数的顺序不稳定,则可能会中断:
(let [a 1 b (inc a)] (+ a b))
Run Code Online (Sandbox Code Playgroud)
没有使用有序地图的原因
因此,需要保持参数的顺序胜过它们是键值对的事实.
归档时间: |
|
查看次数: |
235 次 |
最近记录: |