我花了很多时间调查我的代码为什么返回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
编译之前的模块。
答案 0 :(得分:2)
这是来自std lib的模块Module
的文档。
https://hexdocs.pm/elixir/Module.html#module-module-attributes