在不同的宏之间共享变量

时间:2016-09-16 05:51:02

标签: crystal-lang

如何在宏中访问另一个宏中设置的变量 e.g。

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

macro baz

 p {{ SHARED_VAR }}

end

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

1 个答案:

答案 0 :(得分: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"