Max*_*oel 13
因为根据定义,集合数据结构是无序的:http://en.wikipedia.org/wiki/Set_(data_structure)
更确切地说,Clojure的内置集(#{blah blah blah}给你)是一个哈希集 - 也就是一个由哈希表(http://en.wikipedia.org/wiki/Hash_tables)支持的集合.它为您提供以下保证:
seq将为您提供集合中的每个元素,但是以未定义的顺序.未定义的顺序,在这里,意味着迭代顺序取决于你在设置插入的元素,它们的数量,在其中插入的顺序,所有其它的操作,你可能已经在该集合受审,以及其他各种实施细则是可能会从语言版本变为另一个(甚至在实现之间 - 您可能会,也可能会在Clojure中获得不同的结果,在64位JVM上运行Clojure或ClojureScript).
要带走的重要一点是,如果你正在编写适用于集合(或映射)的代码,那么永远不要让它依赖于所述集合/映射中的任何顺序概念.它会破碎.
alb*_*hin 12
#{3 1 22 44}是Clojure中的一个集合,它不是有序序列.
因此,当您seq对集合执行时,生成的seq的顺序是任意的(但每次在此实例上调用seq时都是相同的).
如果要对集进行排序,可以使用创建排序集 sorted-set
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |