在同一行中别名多个名称

时间:2016-09-22 11:02:47

标签: elixir phoenix-framework

我需要在同一个文件中alias多个模型,并且像往常一样在我的文件中占用大量可见空间:

alias Project.Model1
alias Project.Model2
...
alias Project.ModelN

我查看了文档,我认为不可能这样做:

alias (Project.Model1, Project.Model2,...,Project.ModelN)

我是否需要这样做:

alias Project.Model1 alias Project.Model2 ... alias Project.ModelN

或者有替代方案吗?

2 个答案:

答案 0 :(得分:10)

答案 1 :(得分:1)

请参阅@ patrick-oscity对此特定任务的回答

Kernel.alias/2是一个宏,接受两个参数:模块和[可选] Keyword有一个键as[as: ...]

所以,对你的问题的简单回答是“你做不到。”

为什么要纠缠你的代码未来的读者?请使用Elixir样式指南,每1行只添加1个别名。

UPD 虽然您仍希望在一行中列出所有别名,但请定义您自己的宏:

defmacro aliases(macros) when is_list(macros) do
  for macro <- macros do
    quote do
      alias unquote(macro)
    end
  end
end