2009-09-06 4 views
5

Gibt es eine Möglichkeit, Datensätze direkt in erl zu verwenden? Egal, was ich versuche, es sagt immer, es kann den Rekord nicht finden. Ich versuche, Mnesia-Transaktionen zu machen, und ich kann nicht ohne meine Aufzeichnungen zu weit gehen. Jede Hilfe wird sehr geschätzt - danke!Datensätze in Erl (Erlang Frage)

Antwort

13

Ja, benutze help() und finde diese Befehle in der Shell.

Dies sind ein cleverer Hack in der Shell, mit dem Sie Datensatzdefinitionen laden können, die in Modulen verwendet wurden, als sie kompiliert wurden. Verwenden Sie den Befehl rr, um es von Ihrem Modul zu laden.

Denken Sie daran, dass diese nur für die interaktive Shell verfügbar sind.

+1

Eine kleine Notiz hinzuzufügen: Datensätze existieren nicht wirklich ... sie sind nur getaggte Tupel. Z.B. sagen Sie, dass Sie -record (state, {sessions}) definieren. Wenn du #state {session = N} verwendest, ist es eigentlich das Tupel {state, N}. Wenn Sie nur #state {} eingeben, ist dies ebenfalls {state, undefined}. Wenn man das weiß, kann man leicht Datensätze "fälschen", zum Beispiel wenn man mit mnesia in der Shell arbeitet. Viel Glück. –

3

Wie meinst du das? In der Muschel ist es dann so wie Christian geschrieben hat. Wenn Sie in einem Modul meinen, müssen Sie noch Datensätze definieren, bevor Sie sie verwenden können. Eine Beschreibung dazu finden Sie in der Erlang-Dokumentation, online unter http://erlang.org/doc/. Sie sind nur eine Kompilierzeit Konstruktion, so dass sie nicht als solche existieren.