我是 Clojure 的新手。抱歉,如果这是一个愚蠢的问题!
每次我不关心项目的顺序时,是否应该使用集合而不是向量或列表?当不需要订购时,在这三者之间做出决定的共同标准是什么?
我是 Clojure 的新手。抱歉,如果这是一个愚蠢的问题!
每次我不关心项目的顺序时,是否应该使用集合而不是向量或列表?当不需要订购时,在这三者之间做出决定的共同标准是什么?
这实际上取决于您将如何使用这些物品。
在实践中,我看到的大多数处理都涉及将数据转换为 aseq
和处理 that,因此列表和向量之间的区别通常是个人喜好问题。
一般来说,当您的主要关注点是“这个东西在这个组中吗?”时,您需要一个集合。除了不保持顺序外,集合也只保存给定值一次。因此,如果您关心值的精确放置,则向量更适合您。如果您主要关心成员资格的测试,那么一组更合适。
是的,使用一套。除非您有非常非常好的理由来选择其他东西(性能、内存使用……),否则该集合是正确的选择。
请记住,编程主要是与您的代码的人类阅读者进行交流,而不是与计算机交流。通过使用集合,您可以完全清楚地表明元素的顺序是无关紧要的(并且您不会期望重复值),从而帮助读者理解您的意图和您自己的思维定势。