从大值到小值对向量进行排序
sorting vector from bigger to smaller values
如何将向量从大到小排序,因为这行不通
(sort > ([3 1 2 4]))
但是,使用 >
作为地图值是可行的。
(sort > (vals {:foo 5, :bar 2, :baz 10}))
; => (10 5 2)
请注意,括号在 clojure 中始终很重要,它们从不 "just group" 任意表达式。 ([3 1 2 4])
将矢量作为函数调用,不带任何参数。
你想要(sort > [3 1 2 4])
那是因为您没有将向量传递给 sort
方法 :)
正确的行是:
(sort > [3 1 2 4])
([3 1 2 4])
应该给你一个 ArityException
,因为你试图将矢量用作不带任何参数的函数。
在您的工作示例中,您在调用 (vals {:foo 5, ...})
的 return 值上使用 >
,这是一个序列。参见 docs here for vals。
排序适用于集合(参见 docs here),因此向量 [3 1 2 4] 和序列一样有效。
你的错误是你试图通过在向量周围放置方括号来 "run" 向量(记住任何 s-exp 的第一个参数是函数调用,除非它被引用为列表)。
如何将向量从大到小排序,因为这行不通
(sort > ([3 1 2 4]))
但是,使用 >
作为地图值是可行的。
(sort > (vals {:foo 5, :bar 2, :baz 10}))
; => (10 5 2)
请注意,括号在 clojure 中始终很重要,它们从不 "just group" 任意表达式。 ([3 1 2 4])
将矢量作为函数调用,不带任何参数。
你想要(sort > [3 1 2 4])
那是因为您没有将向量传递给 sort
方法 :)
正确的行是:
(sort > [3 1 2 4])
([3 1 2 4])
应该给你一个 ArityException
,因为你试图将矢量用作不带任何参数的函数。
在您的工作示例中,您在调用 (vals {:foo 5, ...})
的 return 值上使用 >
,这是一个序列。参见 docs here for vals。
排序适用于集合(参见 docs here),因此向量 [3 1 2 4] 和序列一样有效。
你的错误是你试图通过在向量周围放置方括号来 "run" 向量(记住任何 s-exp 的第一个参数是函数调用,除非它被引用为列表)。