Ich versuche, ein Problem mit der Datei zu umgehen: consult / 1 erlaube keine Tupel mit Spaß in ihnen wie in diesem Beispiel:
%Vor%Um das zu umgehen, überlege ich, den Spaß in einen String zu schreiben und ihn zu bewerten
%Vor%Die Frage ist. Wie konvertiere ich die Zeichenfolge in einen Spaß?
file:script/1
macht fast das, was Sie wollen - es bewertet eine Reihe von Erlang-Ausdrücken aus einer Datei und gibt das letzte Ergebnis zurück. Sie könnten es anstelle von file:consult/1
verwenden, aber Sie müssten das Format der Datei von "term. Term. Term" ändern. geben [term, term ,term]
an "[term, term, term]." Geben Sie [term, term, term]
ein - platzieren Sie einen einzelnen Ausdruck in der Datei anstelle einer Sequenz.
Ich möchte darauf hinweisen, dass Zeds Antwort einen interpretierten Spaß erzeugt. Wenn der Spaß aufgerufen wird, tritt er in den Evaluator ein, der damit beginnt, den von erl_parse:parse_exprs/1
zurückgegebenen abstrakten Syntaxbaum zu bewerten, den er erfasst hat. Blick auf den Spaß erstellt:
Man kann sehen, dass es sich über den syntaktischen syntaktischen Baum geschlossen hat, wie in env
info zu sehen, und es ist ein Spaß, der in erlang_eval erstellt wurde, wie in module
info zu sehen ist.
Es ist möglich, den Erlang-Compiler zu verwenden, um ein kompiliertes Modul zur Laufzeit zu erzeugen, und ein Zeiger darauf ist kompilieren: forms / 2 und code: load_binary / 3 . Aber die Details davon sollten wahrscheinlich in eine andere Stack-Overflow-Frage gehen.
Tags und Links erlang