如何将矢量从较大的值排序到较小的值,因为这不起作用
(sort > ([3 1 2 4]))
但是,使用>
表示地图值是有用的。
(sort > (vals {:foo 5, :bar 2, :baz 10}))
; => (10 5 2)
答案 0 :(得分:9)
请注意,括号在clojure中总是很重要,而且它们永远不会只是组#34;任意表达。 ([3 1 2 4])
将向量调用为没有任何参数的函数。
您想要(sort > [3 1 2 4])
答案 1 :(得分:5)
那是因为你没有将向量传递给sort
方法:)
正确的行是:
(sort > [3 1 2 4])
([3 1 2 4])
应该为您提供ArityException
,因为您尝试将vector用作不带任何参数的函数。
答案 2 :(得分:3)
在您的工作示例中,您通过调用>
(这是一个序列)的返回值使用(vals {:foo 5, ...})
。请参阅docs here for vals。
sort适用于集合(请参阅docs here),因此矢量[3 1 2 4]有效,序列也是如此。
你的错误就是你在尝试"跑步"通过在其周围放置括号来向量(记住任何s-exp的第一个arg是函数调用,除非它被引用为列表)。