2016-09-16 71 views
0

如何訪問在另一個宏 中設置的宏中的變量,例如,在不同的宏之間共享變量

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

macro baz 

p {{ SHARED_VAR }} 

end 

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

回答

3

那麼,這只是不是該語言的一個功能,可能是有很好的理由。

一些替代方案:
使用一個常量,但你不能做編譯時的事情吧:

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"