Есть ли способ использовать записи непосредственно в erl? Независимо от того, что я пытаюсь, он всегда говорит, что он не может найти запись. Я пытаюсь делать транзакции mnesia, и я не могу зайти слишком далеко без моих записей. Любая помощь очень ценится - спасибо!Записи в Erl (вопрос Erlang)
5
A
ответ
13
Да, используйте help() и найдите эти команды в оболочке.
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
Это умный хак в оболочке, они позволяют загружать записи определений, используемых в модулях, когда они были собраны. Используйте команду rr, чтобы загрузить ее из своего модуля.
Помните, что они доступны только для интерактивной оболочки.
3
Как вы относитесь? В скорлупе это так, как писал христианин. Если вы имеете в виду в модуле, вам все равно придется определять записи, прежде чем вы сможете их использовать. См. Документацию erlang, онлайн по адресу http://erlang.org/doc/, для описания того, как это сделать. Это всего лишь компиляция времени, поэтому они не существуют как таковые.
Небольшое примечание для добавления: Записи на самом деле не существуют ... они просто помечены кортежами. Например. скажем, что вы определяете -record (state, {sessions}). то когда вы когда-либо используете #state {session = N}, на самом деле это будет кортеж {state, N}. Аналогично, если вы только набираете #state {}, то это будет {state, undefined}. Зная это, вы можете легко «подделывать» записи, например, при работе с mnesia в оболочке. Удачи. –