2009-09-06 10 views
5

Czy istnieje sposób na wykorzystanie rekordów bezpośrednio w erl? Bez względu na to, co próbuję, zawsze mówi, że nie może znaleźć płyty. Próbuję dokonywać transakcji mezji i nie mogę posunąć się za daleko bez moich danych. Każda pomoc jest bardzo ceniona - dziękuję!Rejestry w Erl (pytanie Erlanga)

Odpowiedz

13

Tak, użyj help() i znajdź te polecenia w powłoce.

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 

Są to sprytne włamania w powłoce, pozwalają na załadowanie definicji rekordów używanych w modułach podczas ich kompilacji. Użyj polecenia rr, aby załadować je z modułu.

Pamiętaj, że są one dostępne tylko dla interaktywnej powłoki.

+1

Mała uwaga do dodania: Rekordy tak naprawdę nie istnieją ... są tylko oznaczone krotkami. Na przykład. powiedzmy, że definiujesz -record (state, {sessions}). wtedy gdy kiedykolwiek użyjesz #state {session = N}, będzie to faktycznie krotka {state, N}. podobnie, jeśli napiszesz tylko #state {}, to będzie to {stan, undefined}. Wiedząc o tym, możesz łatwo "udawać" zapisy, na przykład podczas pracy z mezją w powłoce. Powodzenia. –

3

Jak masz na myśli? W skorupie jest tak, jak napisał Christian. Jeśli masz na myśli moduł, musisz jeszcze zdefiniować rekordy, zanim będziesz mógł z nich korzystać. Zobacz dokumentację erlang, dostępną pod adresem http://erlang.org/doc/, aby uzyskać opis, jak to zrobić. Są tylko konstrukcją w czasie kompilacji, więc nie istnieją jako takie.