我使用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
我如何解决这个错误以及为什么会发生这种错误,因为我正在遵循别名的文档!
如文档中所述,Alias
允许您为任何给定的模块名称设置别名。 alias
的目的是别名模块名称。您正在寻找的是import
,它允许您使用没有完整模块名称的函数名称。
如果我理解你想要正确做什么,你会想要使用import IO
,或者更具体地说,import IO, only: [puts: 2]
。
你不需要alias
任何东西。只是
defmodule MyModule do
def hello do
IO.puts(:world)
end
end
顺便说一句,alias
期望模块作为第一个参数,而不是函数。