我寫了兩個這樣的函數,但正如你看到他們大部分是相同的,所以我想編寫一個宏來簡化它們。如何使用defmacro簡化一些代碼
我明白我教科書中的簡單宏例子,但我不知道如何編寫自己的例子。
這裏是我的代碼:
(defn load-dict
; "Load database from a txt file previous saved"
[fname]
(with-open [rdr (io/reader fname)]
(doseq [line (line-seq rdr)]
(println line)
(def vvv (clojure.string/split line #"\s"))
;(println (str "count of vvv is " (count vvv)))
(if (< 1 (count vvv))
(add- dict (gen-word (nth vvv 0) (nth vvv 2) (nth vvv 1))))
)))
(defn load-article
; "Load article from a txt file"
[fname]
(with-open [rdr (io/reader fname)]
(doseq [line (line-seq rdr)]
(println line)
(def vvv (clojure.string/split line #"\s"))
;(println (str "count of vvv is " (count vvv)))
(if (< 1 (count vvv))
(add- article vvv))
)))
我應該寫這樣一個宏:
我其實不知道怎麼寫這樣一個宏。我只是討厭重複的代碼。
PS,拖曳功能正常工作。我不在乎這是代碼的一部分。
使用使用函數來擺脫重複的代碼 – Ankur