首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭-销毁数组与映射

关闭-销毁数组与映射
EN

Stack Overflow用户
提问于 2015-08-18 11:01:11
回答 3查看 562关注 0票数 3

Clojure有一个非常好的析构语法,它既适用于数组也适用于映射。

我经常在这两者之间感到困惑,这意味着我不知道该选哪一个。什么时候应该使用映射作为参数,什么时候应该使用数组?

例如,我计算了以下数据,我想要传递经度和纬度。我可以将其作为{:lat 12 :lng 34}[12 34]传递,也可以作为两个参数传递。

注意:我不使用两个参数,因为我认为使用coords绑定更好。

然后假设我想添加新的字段(精度、高度、时间戳.),它的优势似乎在地图上:

  • 使用更多的参数,数组似乎不太容易读懂(您必须查看原型才能理解析构,因此需要了解所使用的参数)。
  • 在地图中,我可以添加新的字段并打印它是自描述的(键充当标签)。

但是,我常常以函数结束,将一个大的options参数作为映射,并带有一些不相关的子选项。它感觉有点臃肿,即使只有10把钥匙。

那么,什么时候应该使用map,什么时候应该在函数参数中使用数组?在可读性/可扩展性/性能方面,有利/不利因素是什么?而且,在这种情况下,core.match能帮上忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-18 12:58:32

总结一下(虽然可能还有更多)

我想说,基于位置的数据结构,比如向量,很早就达到了极限。特别是当数据结构在很多地方被使用并且比列表更“描述性”的时候。

为什么是地图?

最初,它们很容易使用,并且非常灵活,在开发过程中,它们可以很容易地被交换为与地图一样灵活的记录,但是:

  • 实际上是所有的类/类型
  • 因此,具有纯java字段访问特性。
  • 因此,可以很好地处理协议/接口。
  • 但几乎和地图一样灵活
  • 好好利用各种破坏
  • 它们提供了一套不用自己实现的util函数。
    • (map->LngLat {...}) (从地图生成LngLat )和
    • (apply ->LngLat [...]) (从向量构造LngLat )
    • 可能更..。

票数 2
EN

Stack Overflow用户

发布于 2015-08-18 12:59:57

正如@birdspider在评论中所指出的那样,记录可以帮助您组织地图的破坏以及许多其他好处。

在如何构造记录方面,您也有相当大的灵活性。您可以使用向量样式的位置参数,也可以将键作为映射传递。

斯图亚特塞拉的博客帖子给出了一个很好的能力概述。

票数 1
EN

Stack Overflow用户

发布于 2015-08-18 13:12:55

另一种选择是使用键:交替键和值的序列作为尾随参数。通过这种方式设置了几个核心功能:

代码语言:javascript
复制
(hash-map 1 2 3 4) ;{1 2, 3 4}

(assoc {1 2} 3 4) ;{3 4, 1 2}

您可以将键放到地图中,或者将它们绑定到适合情况的名称上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32070578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档