0

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

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

macro baz

 p {{ SHARED_VAR }}

end

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

1 回答 1

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"
于 2016-09-16T07:39:49.527 回答