2011-10-05 139 views
1
(ns utils 
    (:gen-class :name Utils 
       :methods [#^{:static true} [sum [java.util.Collection] long]])) 

(defn sum [coll] (reduce + coll)) 

(defn -sum [coll] (sum coll)) 

請解釋這段代碼!這個clojure代碼是做什麼的?

+2

當然,你要不要炒,而你等待?或者稍微冷嘲熱諷:你有沒有嘗試*理解它?你的解釋是什麼?你卡在哪裏? –

+0

這不是任何功課,對吧? ;) – Matt

+1

@Matt它實際上是我原來的答案在這裏複製粘貼:http://stackoverflow.com/questions/7658954/how-to-pass-list-as-a-parameter-to-a-clojure-函數 – ponzao

回答

5

具有不使用Clojure的創一流的設施,我的回答可能有點模糊:

這將產生必要的字節碼,約爲equivilant於Java的僞代碼:

class Utils { 
    public static long sum(Collection coll) { 
    // Here goes the necessary code to call (sum coll) 
    // through the Clojure runtime 
    } 
} 
  • -sum指示Clojure生成Java方法。
  • (sum coll)是調用的sum的第一個定義,這只是一個普通的Clojure函數定義