在模块中定义Erlang记录
我可以通过以下方式在erl外壳上定义记录:在模块中定义Erlang记录,erlang,record,Erlang,Record,我可以通过以下方式在erl外壳上定义记录: 129> rd(person, {name=""}). person 130> #person {}. #person{name = []} 131> #person {name="dummy"}. #person{name = "dummy"} 但我不知道如何在模块中定义和使用记录。创建我的_module.erl时: -module(my_module). -record(person, {name, phone, addres
129> rd(person, {name=""}).
person
130> #person {}.
#person{name = []}
131> #person {name="dummy"}.
#person{name = "dummy"}
但我不知道如何在模块中定义和使用记录。创建我的_module.erl时:
-module(my_module).
-record(person, {name, phone, address}).
#person {name="dummy"}.
…并尝试编译,我得到:
132> c(my_module).
my_module.erl:5: syntax error before: '#'
my_module.erl:3: Warning: record person is unused
error
文档中说,在shell中使用rd是因为记录在编译时可用,而不是在运行时可用。因此,我假设我不需要在模块定义中使用rd。您已经正确定义了它,但是记录只能在函数中使用(当它在模块中时) 所以加上
test_record()->#person{name=“dummy”}。
然后,您可以使用
my\u module:test\u record()
如果要在多个模块中使用记录,可以将其放入头文件(例如foo.hrl
):
然后,您可以将头文件包含在需要的模块中:
-include_lib("path/to/foo.hrl")
通常,这些头文件被放入应用程序的include
目录中
编辑:我引自:
include_lib
类似于include
,但不应指出
绝对文件。相反,第一个路径组件(可能在
变量替换)被假定为应用程序的名称。
例如:
-include_lib("kernel/include/file.hrl").
因此,我所写的似乎对include
更为真实
-include_lib("kernel/include/file.hrl").