2009-09-06 15 views
5

¿Hay alguna forma de utilizar registros directamente en erl? No importa lo que intente, siempre dice que no puede encontrar el registro. Estoy tratando de hacer transacciones de mnesia y no puedo ir demasiado lejos sin mis registros. Cualquier ayuda es muy apreciada, ¡gracias!Registros en Erl (pregunta de Erlang)

Respuesta

13

Sí, use help() y encuentre estos comandos en el 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 

Estos son un artilugio ingenioso en la cáscara, que le permiten cargar las definiciones de discos usados ​​en los módulos cuando fueron compilados. Use el comando rr para cargarlo desde su módulo.

Recuerde que estos solo están disponibles para el uso interactivo del shell.

+1

Una pequeña nota para agregar: Los registros realmente no existen ... son solo tuplas etiquetadas. P.ej. di que defines -record (state, {sessions}). entonces, cuando uses #state {session = N}, en realidad será la tupla {state, N}. Del mismo modo, si solo escribe #state {}, este será {state, undefined}. Sabiendo esto, puedes fácilmente "falsificar" registros, por ejemplo, cuando trabajas con mnesia en el caparazón. Buena suerte. –

3

¿Qué quieres decir? En el caparazón, entonces es como Christian escribió. Si quiere decir en un módulo, aún tiene que definir registros antes de poder usarlos. Consulte los documentos de erlang, en línea en http://erlang.org/doc/, para obtener una descripción sobre cómo hacer esto. Solo son una compilación en tiempo de compilación, por lo que no existen como tales.

Cuestiones relacionadas