Эликсир. Что делает ключевое слово "use"?

Я подозреваю, что это элементарный вопрос, но трудно найти краткий, канонический ответ онлайн.

Из того, что мало что понимаю,

  • Он отличается от "require" и "import"
  • Он используется для импорта содержимого модулей.
  • Это макрос

Может ли кто-нибудь уточнить?

Ответ 1

Для этого require данный модуль, а затем вызывается обратный вызов __using__/1 позволяющий модулю внедрить некоторый код в текущий контекст. Смотрите https://elixir-lang.org/getting-started/alias-require-and-import.html#use.

Пример:

defmodule Test do
  use Utility, argument: :value
end

примерно так же, как

defmodule Test do
  require Utility
  Utility.__using__(argument: :value)
end