Clojure 有一个非常好的解构语法,它适用于数组和映射。
我经常在两者之间混淆,这意味着我不确定该选择哪一个。什么时候应该使用地图作为参数,什么时候应该使用数组?
例如,我遇到了以下数据,我想传递一个经度和一个纬度。我可以将它作为{:lat 12 :lng 34}
or[12 34]
或作为两个参数传递。
注意:我不使用两个参数,因为我认为coords
绑定更好。
然后假设我想添加新字段(精度,高度,时间戳......),似乎优势然后转到地图:
- 带有更多参数的数组似乎不太可读(您必须查看原型以了解解构以及使用的参数)。
- 在地图中,我可以添加新字段并打印它是自描述的(键充当标签)。
但后来我经常会得到将大options
参数作为映射的函数,并带有一些不相关的子选项。即使只有 10 个键,它也感觉有点臃肿。
那么,什么时候应该使用 map,什么时候应该在函数参数中使用数组?在可读性/可扩展性/性能方面有哪些优点/缺点?另外,core.match
在这种情况下可以提供帮助吗?