我刚接触Clojure,如果问题比较愚蠢,请见谅!
在不关心项目顺序时,是否每次都应该使用 set 而不是 vector 或 list?当不需要考虑顺序时,如何选择这三者之一是一个普遍的标准?
我刚接触Clojure,如果问题比较愚蠢,请见谅!
在不关心项目顺序时,是否每次都应该使用 set 而不是 vector 或 list?当不需要考虑顺序时,如何选择这三者之一是一个普遍的标准?
这取决于您将如何使用这些项目。
在实践中,我看到的大多数处理都涉及将数据转换为seq并处理它,因此列表和向量之间的区别通常是个人品味的问题。
通常情况下,当您的主要关注点是“这个东西在这个组中吗?”时,您需要使用set。除了不保留顺序之外,set还只能保存一个特定的值。因此,如果您关心值的精确位置,则更适合使用vector。如果您主要关心成员资格测试,则应使用set。
是的,使用set。除非你有非常好的理由选择其他东西(例如性能、内存使用等),否则set是正确的选择。
记住,编程主要是与代码的人类读者进行沟通,而不是与计算机进行沟通。通过使用set,您使元素的顺序无关紧要(并且您不希望出现重复值),帮助读者理解您的意图和自己的思维方式。