【问题标题】:Clojure set and hash-set returns unordered value [duplicate]Clojure 集和哈希集返回无序值
【发布时间】:2019-08-31 09:36:45
【问题描述】:

我最近在玩 Clojure,在那里遇到了一些棘手的事情。

为什么会这样:

(set [3 3 3 3 4 "Sample String"])

在我的 REPL 中返回:

;=> #{4 3 "Sample String"}

当它自然而然时应该返回:

;=> #{3 4 "Sample String"}

有什么解释吗?

【问题讨论】:

    标签: clojure set hashset read-eval-print-loop


    【解决方案1】:

    Set 返回集合的唯一元素。集合中的元素是无序的,这意味着不能保证元素的特定顺序(请参阅https://clojuredocs.org/clojure.core/set)。

    如果您想要特定的排序,请使用 sorted-set (https://clojuredocs.org/clojure.core/sorted-set)。

    由于您的示例中有不同类型的元素(即字符串和数字),您必须指定一个比较器来定义排序,因此您需要使用 sorted-set-by (https://clojuredocs.org/clojure.core/sorted-set-by)。

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 2015-11-02
      • 2021-12-15
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多