2013-01-13 39 views
2

有人可以向我解釋這個嗎?我想我理解(defn -main)是聲明一個主要的方法,可以被識別通過Java,如果你將這個命名空間與(:gen-class)結合使用,你可以欺騙Java來思考clojure是面向對象的,但是如果你只是創建一個類似於函數的函數,我無法弄清楚目的是什麼(defn函數名)和(defn函數名在clojure中有什麼區別?

(def- ADD2 (局部+ 2) )

或(defn-我的功能...)

任何人都可以解釋這個簡單或糾正我,如果上述假設是錯誤的?

**編輯 - 我理解部分的功能是什麼:)我只是想知道,如果有以上之間的差值(DEF ADD2(部分+ 2))與defn-定義

回答

9

功能無法訪問在它們被定義的命名空間之外。換句話說,它們是私有的

看看source of defn-。該宏評估對defn的調用,{:private true}合併到元數據哈希中。

+0

這很好,感謝您的快速回復(12分鐘接受回答) – SMC

+0

更好的是,使用(源)沒有發生在我身上,因爲我認爲它會給我(defn)的來源,一個特殊的操作員 – SMC

相關問題