在不同的宏之间共享变量

问题描述:

如何访问在另一个宏 中设置的宏中的变量,例如,在不同的宏之间共享变量

macro foo(arg) 
{% SHARED_VAR = arg%} 
p {{arg}} 
end 

macro baz 

p {{ SHARED_VAR }} 

end 

foo("foo") 
baz #=> prints "foo" 

那么,这只是不是该语言的一个功能,可能是有很好的理由。

一些替代方案:
使用一个常量,但你不能做编译时的事情吧:

macro foo(arg) 
    SHARED_VAR = {{arg}} 
end 

macro baz 
    p SHARED_VAR 
end 

foo("foo") 
baz #=> prints "foo" 

或直接致电其他宏观与附加信息:

macro foo(arg) 
    {% shared_var = arg %} 
    baz({{shared_var}}) 
    p {{arg}} 
end 

macro baz(arg) 
    p {{arg}} 
end 

foo("foo") #=> prints "foo"