在不同的宏之间共享变量

Sharing variables between different macros

如何访问在另一个宏中设置的宏中的变量 例如

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"