小编use*_*318的帖子

混淆Clojure宏定义

对于我来说,clojure宏是一个难点,这是一个从"Pratical Clojure"中获取的宏观示例:

(defmacro triple-do [form] 
  (list 'do form form form))

user=> (triple-do (println "test"))

test

test

test

nil
Run Code Online (Sandbox Code Playgroud)

这个三合一效果很好而且我认为以下版本应该可以工作但不能

(defmacro triple-do [form] 
  (do form form form))

user=> (triple-do (println "test"))

test

nil
Run Code Online (Sandbox Code Playgroud)

为什么它只打印一次?

以下让我非常困惑

(defmacro test-macro [form] (do form (println "hard code test")))


user=> (test-macro (println "hello"))

hard code test

nil
Run Code Online (Sandbox Code Playgroud)

为什么"你好"没有在控制台中显示?

macros clojure

3
推荐指数
1
解决办法
116
查看次数

标签 统计

clojure ×1

macros ×1