在这种情况下我应该使用宏吗?要么 ...

时间:2016-12-24 03:07:55

标签: macros elixir phoenix-framework

说,我在Phoenix / Elixir中有这部分配置:

use Mix.Config

config :my_app, MyApp.Endpoint,
  var1: 111,
  var2: 222,
  var3_depends_on_var2: ???? # var2 + 666

我想要" var3_depends_on_var2"的值依赖" var2",同时我不想明确地复制粘贴它。如果我无法引用它,我相信我应该使用宏来代替它。是这样吗?如果有,怎么样?值得努力吗?

2 个答案:

答案 0 :(得分:2)

由于这些行只是对Mix.config/3的调用,并且在最后一个参数中发生了翻转,即Keyword列表,因此无法简单地从另一个参考中引用一个Keyword值宣言期间。

您可以使用的只是初步var声明:

use Mix.Config
var = 222

config :my_app, MyApp.Endpoint,
  var1: 111,
  var2: var,
  var3_depends_on_var2: var + 666

答案 1 :(得分:1)

由于这是一个Elixir脚本文件,您可以使用普通变量:

use Mix.Config

var2 = 222

config :my_app, MyApp.Endpoint,
  var1: 111,
  var2: var2,
  var3_depends_on_var2: var2 + 666

我无法想到用宏来做任何非常复杂的方法。