Erl中的记录(Erlang问题)

Erl中的记录(Erlang问题),erlang,mnesia,erl,Erlang,Mnesia,Erl,有没有办法直接在erl中使用记录?不管我怎么做,它总是说找不到唱片。我正在尝试做mnesia交易,没有记录我不能走得太远。非常感谢您的帮助,谢谢 是的,使用help()并在shell中查找这些命令 rd(R,D) -- define a record rf() -- remove all record information rf(R) -- remove record information about R rl() -- display all rec

有没有办法直接在erl中使用记录?不管我怎么做,它总是说找不到唱片。我正在尝试做mnesia交易,没有记录我不能走得太远。非常感谢您的帮助,谢谢

是的,使用help()并在shell中查找这些命令

rd(R,D)    -- define a record
rf()       -- remove all record information
rf(R)      -- remove record information about R
rl()       -- display all record information
rl(R)      -- display record information about R
rp(Term)   -- display Term using the shell's record information
rr(File)   -- read record information from File (wildcards allowed)
rr(F,R)    -- read selected record information from file(s)
rr(F,R,O)  -- read selected record information with options
这些是shell中的一个聪明的技巧,它们允许您在编译模块时加载模块中使用的记录定义。使用rr命令从模块中加载它


请记住,这些仅可供交互式shell使用。

这是什么意思?在贝壳里,就像克里斯蒂安写的那样。如果您的意思是在一个模块中,那么您仍然必须定义记录才能使用它们。有关如何执行此操作的说明,请参阅在线的erlang文档。它们只是一个编译时结构,所以它们并不存在。

需要补充的一点是:记录实际上并不存在。。。它们只是标记的元组。例如,假设您定义了-record(状态,{sessions})。当你使用#state{session=N}时,它实际上是元组{state,N}。同样,如果您只键入#state{},那么这将是{state,undefined}。知道了这一点,你可以很容易地“伪造”记录,例如在shell中使用mnesia时。祝你好运