我应该在这种情况下使用宏吗?或...
问题描述:
说,我在凤凰城/药剂一个配置的这一部分:我应该在这种情况下使用宏吗?或...
use Mix.Config
config :my_app, MyApp.Endpoint,
var1: 111,
var2: 222,
var3_depends_on_var2: ???? # var2 + 666
我想“var3_depends_on_var2”依赖于“VAR2”的价值,同时我不想明确复制粘贴它。如果我不能引用它,我相信我应该使用宏而不是。是这样吗?如果是,如何?这是值得的努力?
答
由于这些线路都不过是在调用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
答
因为这是一个花好月圆的脚本文件,你可以使用正常的变量:
use Mix.Config
var2 = 222
config :my_app, MyApp.Endpoint,
var1: 111,
var2: var2,
var3_depends_on_var2: var2 + 666
我想不出任何不是超级复杂的方式与宏做到这一点。
好吧,但我怎么用宏来做到这一点? – Saurabh
由于我放在第一句话的原因,你不能。正如Chris McCord所说:使用宏的第一条规则是你不应该使用宏。我明白你愿意使用它们,只是因为现在你可以使用它们,但这是一种错误的方式。没有宏的任何事情都应该在没有宏的情况下完成。 – mudasobwa
ненучетыблинвсамомделе? – Saurabh