我可以通过以下方式在 erl shell 上定义记录:
129> rd(person, {name=""}).
person
130> #person {}.
#person{name = []}
131> #person {name="dummy"}.
#person{name = "dummy"}
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在模块中定义和使用记录。当我创建 my_module.erl 时:
-module(my_module).
-record(person, {name, phone, address}).
#person {name="dummy"}.
Run Code Online (Sandbox Code Playgroud)
...并尝试编译,我得到:
132> c(my_module).
my_module.erl:5: syntax error before: '#'
my_module.erl:3: Warning: record person is unused
error
Run Code Online (Sandbox Code Playgroud)
文档说 rd 在 shell 中使用,因为记录在编译时可用,而不是运行时可用。所以我假设我不需要在模块定义中使用 rd 。
如果你想在多个模块中使用一条记录,你可以将它放在头文件中(例如foo.hrl):
-record(foo, {bar, baz}).
Run Code Online (Sandbox Code Playgroud)
然后,您可以将头文件包含在您需要的模块中:
-include_lib("path/to/foo.hrl")
Run Code Online (Sandbox Code Playgroud)
通常这些头文件被放入include应用程序的目录中。
编辑:我引用文档:
include_lib与 类似include,但不应该指出绝对文件。相反,第一个路径组件(可能在变量替换之后)被假定为应用程序的名称。例子:Run Code Online (Sandbox Code Playgroud)-include_lib("kernel/include/file.hrl").
所以,看来我写的实际上更适合include。
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |