为什么 Elixir 警告我导入未使用?

Why is Elixir warning me that my import is unused?

我是 Elixir 的新手,遇到过这个问题。这对我来说没有任何意义,所以我可能遗漏了一些东西。

为什么 Elixir 给我这个警告:

lib/test.ex:3: warning: unused import

在该代码上

defmodule Test do
  def run(str) do
    import Poison
    obj = Poison.Parser.parse!(str)
    obj = %{obj | "name" => "bert"}
    obj = %{obj | "alter" =>  "30"}
    Poison.encode!(obj)
  end
end

import 用于明确表示您将要使用导入的模块函数,而不用模块名称作为前缀。

http://elixir-lang.org/getting-started/alias-require-and-import.html#import

因此,由于您将这些函数与 Poison 前缀一起使用,因此 import 仍未使用,您会收到编译器警告。

要扩大 Kernael 的答案,请按以下方式修改您的代码:

defmodule Test do
  import Poison
  def run(str) do
    obj = Parser.parse!(str)
    obj = %{obj | "name" => "bert"}
    obj = %{obj | "alter" =>  "30"}
    encode!(obj)
  end
end

警告将消失。 (注意:我移动了导入,因为它更符合惯用语,但在您的代码中也可以)。