2009-09-06 8 views
5

C'è un modo per utilizzare i record direttamente in erl? Non importa quello che provo, dice sempre che non riesce a trovare il record. Sto cercando di fare transazioni in mnesia e non posso andare troppo lontano senza i miei record. Qualsiasi aiuto è molto apprezzato - grazie!Record in Erl (domanda Erlang)

risposta

13

Sì, utilizzare help() e trovare questi comandi nella 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 

questi sono un trucco geniale nel guscio, che consentono di caricare le definizioni di record utilizzati nei moduli quando sono stati compilati. Usa il comando rr per caricarlo dal tuo modulo.

Ricordare che questi sono disponibili solo per la shell interattiva da utilizzare.

+1

Una piccola nota da aggiungere: i record non esistono davvero ... sono solo tuple etichettate. Per esempio. dì che definisci -record (stato, {sessioni}). poi quando usi #state {session = N}, in realtà sarà la tupla {state, N}. allo stesso modo, se scrivi solo #state {} allora questo sarà {stato, indefinito}. Sapendo questo puoi facilmente "falsificare" i record per esempio quando lavori con mnesia nella shell. In bocca al lupo. –

3

Come intendete? Nel guscio, allora è come ha scritto Christian. Se intendi in un modulo, devi ancora definire i record prima di poterli utilizzare. Vedere i documenti di erlang, online al numero http://erlang.org/doc/, per una descrizione su come farlo. Sono solo una costruzione a tempo di compilazione, quindi non esistono come tali.