Erlang模块中自定义属性的位置要求是什么?



似乎:

  • Dialyzer和erlc当源文件中有一个用户定义的属性在-module
  • 之前时都出错

Shell会话演示:

~ cat sample.erl
-my_attr(my_value).
-module(sample).
-compile([export_all, nowarn_export_all]).
main(_) ->
ok.
~ erlc sample.erl
sample.erl:1:2: no module definition
%    1| -my_attr(my_value).
%     |  ^
~ dialyzer sample.erl
Checking whether the PLT /Users/mheiber/Library/Caches/erlang/.dialyzer_plt is up-to-date... yes
Proceeding with analysis...
dialyzer: Analysis failed with error:
Could not scan the following file(s):
/Users/mheiber/sample.erl:1:2: no module definition
Last messages in the log cache:
Reading files and computing callgraph...

用户自定义属性的顺序契约是否记录在任何地方?还是这是个bug?

我能在文档中找到的是预定义的属性必须在函数声明之前出现:

https://www.erlang.org/doc/reference_manual/modules.html pre-defined-module-attributes

-module(Module).

模块声明,定义模块的名称。Module这个名字,一个原子等于文件名减去扩展名。erl。否则,代码加载将无法正常工作。

此属性首先指定并且是唯一的强制属性。

相关内容

  • 没有找到相关文章

最新更新