Я просто потратил много времени на выяснение того, почему мой код возвращает nil:
defmodule Test
@impl 42
def foo, do: IO.inspect(@impl)
Оказывается, @impl
является зарезервированным именем атрибута.Хорошо, урок усвоен.Однако теперь мне интересно, каков полный список зарезервированных ключевых слов атрибутов?Я не могу найти документацию.Самым близким, что я нашел, было this
Elixir имеет несколько зарезервированных атрибутов.Вот некоторые из них, наиболее часто используемые:
@moduledoc - provides documentation for the current module.
@doc - provides documentation for the function or macro that follows the attribute.
@behaviour - (notice the British spelling) used for specifying an OTP or user-defined behaviour.
@before_compile - provides a hook that will be invoked before the module is compiled. This makes it possible to inject functions inside
модуль точно перед компиляцией.