mastering clojure macros 的一个小错误

macros can be contagious(传染)中有如下例子

(defn send-email [user messages]
  (Thread/sleep 1000)) ;; this would send email in a real implementation

(def admin-user "[email protected]")
(def current-user "[email protected]")

(defn notify-everyone [messages]
  (apply log messages)
  (send-email admin-user messages)
  (send-email current-user messages))

; CompilerException java.lang.RuntimeException:
;   Can't take value of a macro: #'user/log, compiling:(NO_SOURCE_PATH:2:3)

其实apply 这段换个写法就可以

(defn send-email [user messages]
   ( log user messages)
  (Thread/sleep 1000)) ;; this would send email in a real implementation

(def admin-user "[email protected]")
(def current-user "[email protected]")

 


(defn notify-everyone [messages]
  (  log messages)
  (send-email admin-user messages)
  (send-email current-user messages))

猜你喜欢

转载自blog.csdn.net/weixin_40455124/article/details/114711644
今日推荐