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

问题描述 投票:2回答:2

我使用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

我如何解决这个错误以及为什么会发生这种错误,因为我正在遵循别名的文档!

elixir
2个回答
2
投票

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

如果我理解你想要正确做什么,你会想要使用import IO,或者更具体地说,import IO, only: [puts: 2]


0
投票

你不需要alias任何东西。只是

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

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

© www.soinside.com 2019 - 2024. All rights reserved.