Elixir - 'use'关键字有什么作用?

Cha*_*lie 12 macros erlang functional-programming module elixir

我怀疑这是一个基本问题,但很难在网上找到一个简洁,规范的答案.

从我理解的一点点来看;

  • 它与'require'和'import'都不同
  • 它用于导入模块的内容.
  • 这是一个宏

任何人都可以澄清吗?

Paw*_*rok 26

require是给定的模块,然后__using__/1在其上调用回调,允许模块将一些代码注入当前上下文.见http://elixir-lang.org/docs/v1.0/elixir/Kernel.html#use/2.

例:

defmodule Test do
  use Utility, argument: :value
end
Run Code Online (Sandbox Code Playgroud)

与...大致相同

defmodule Test do
  require Utility
  Utility.__using__(argument: :value)
end
Run Code Online (Sandbox Code Playgroud)

  • `require`与函数无关,它只是使`require`'d模块的宏可用于当前的词法范围.http://elixir-lang.org/getting-started/alias-require-and-import.html (3认同)