对于Clojure来说,我非常非常非常新(就像昨天开始的那样).
我有一个数字列表,需要找到列表中最大的数字.
到目前为止,我想出了类似的东西:
def boxes [1 2 3 4 5])
(println "List of box volumes:" boxes)
(defn top-one [[big1 :as acc] x]
(cond
(> x big1) [x big1]
:else acc))
(defn top-one-list [boxes]
(reduce top-one [0] boxes))
(println "Biggest volume from boxes:" top-one-list)
Run Code Online (Sandbox Code Playgroud)
最后一个println给了我一些奇怪的东西:
#<core$_main$top_one_list__30 proj_one.core$_main$top_one_list__30@13c0b53>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Nat*_*hes 13
函数max返回它传递的参数的最大值:
(max 1 2 3 4 5)
Run Code Online (Sandbox Code Playgroud)
要使用序列调用它,您可以使用apply:
(apply max boxes)
Run Code Online (Sandbox Code Playgroud)
Dao Wen指出,如果序列可能为空,则reduce允许指定默认值:
(reduce max -1 []) # returns -1
Run Code Online (Sandbox Code Playgroud)
和适用的相同作品:
(apply max -1 []) # returns -1
Run Code Online (Sandbox Code Playgroud)
否则申请会爆炸:
user=> (apply max [])
ArityException Wrong number of args (0) passed to: core$max clojure.lang.AFn.th
rowArity (AFn.java:437)
Run Code Online (Sandbox Code Playgroud)