在clojure这个LISP方言中,可以这样写一个show宏
(defmacro show [x]
`(print '~x "=" ~x))
这个宏返回了一个s-表达式,`的意思是宏模板,这个先不要理
这里~x的意思是解引述,类似于插值$x,'~x是防止对x求值,将x作为符号变量处理,类似esc
请问这个宏在julia中应该怎么写
在clojure这个LISP方言中,可以这样写一个show宏
(defmacro show [x]
`(print '~x "=" ~x))
这个宏返回了一个s-表达式,`的意思是宏模板,这个先不要理
这里~x的意思是解引述,类似于插值$x,'~x是防止对x求值,将x作为符号变量处理,类似esc
请问这个宏在julia中应该怎么写
Meta.quot
macro myshow(x)
return :(println(“?=”,$x))
end
a=5
b=10
@myshow(a)
@myshow(b)
#------
题主的意思是 结果为 a=5; b=10
也就是对于传递参数,不仅要提取变量值,还要提取变量名自身。
目前,可以用hash或dict;要么从堆栈里“揪”出来(这太麻烦)。
这个问题提到好,看看还有什么好方法?
答案:
#----------------
macro myshow(x)
:(println($(string(x))," = ",$x))
end
#----------------
a=(5,6,7)
b=10
x=25
y=33.3
z=“Macro”
@myshow(a)
@myshow(b)
@myshow(x)
@myshow(y)
@myshow(z)
不过在for loop里面情形又不一样了,因为循环变量,不是定义变量本身,所以,写法不同,更简单一点。