Elixir Alias返回"别名的无效参数,期望编译时原子或别名,得到:"

时间:2017-12-31 13:30:45

标签: elixir

我使用mix创建了一个新项目,我尝试了别名,这是我的简单代码:

defmodule MyModule do
  alias IO.puts
  def hello do
    IO.puts(:world)
  end
end

但它又向我回复了这个错误:     invalid argument for alias, expected a compile time atom or alias, got: IO.puts()

我也尝试过:

alias IO.puts, as: puts
alias IO.puts, as: puts()
alias IO.puts(), as: puts

我如何解决此错误及其发生的原因,因为我正在遵循别名的文档!

2 个答案:

答案 0 :(得分:2)

如文档中所述,Alias允许您为任何给定的模块名称设置别名。 alias的目的是别名模块名称。你要找的是 import ,它允许你使用没有完整模块名称的函数名称。

如果我理解您要正确执行的操作,则可以使用import IO,或者更具体地说,import IO, only: [puts: 2]

答案 1 :(得分:0)

您不需要alias任何内容。刚

defmodule MyModule do
  def hello do
    IO.puts(:world)
  end
end

顺便说一句,alias期望一个模块作为第一个参数,而不是一个函数。