我能做到:
(defn hello [name] (println "Hello" name "!")) <br>
(hello "champ") -> Hello champ !
但是如何改变我的功能,所以我不需要加注?
(hello champ) -> Hello champ !
答案 0 :(得分:2)
您可以使用宏来实现此目的:
(defmacro hello [nsym] `(println "Hello" ~(name nsym) "!"))
(hello world)
打印Hello World !
编辑:更正表单,以免误导您。感谢kotarak的评论。
答案 1 :(得分:1)
这也有效(使用 str 而不是名称):
(defmacro hello [nsym] `(println "Hello" ~(str nsym) "!"))