Könnte jemand die verschiedenen für die Metaprogrammierung in Julia verfügbaren Quotierungsmechanismen klar darstellen und jede mit einem minimalen Beispiel illustrieren?
Damit ist klar, was in welcher Situation zu verwenden ist ...
So weit ich sehen kann, gibt es:
:(someExpr; maybeMore)
quote; ...expressions... end;
, das ist fast das gleiche wie oben nur mit Zeilennummern für Debug-Zwecke Expr(:quote, x)
was ( gemäß @totalverb ) entspricht Meta.quot(x)
Ist diese Liste umfassend? Vermeide ich irgendwelche alternativen Darstellungen?
:...
ist der Standard-Quotierungsmechanismus. Es analysiert einen Ausdruck und gibt den AST zurück.
eval(:<expr>)
sollte dasselbe wie nur <expr>
zurückgeben (angenommen <expr>
ist ein gültiger Ausdruck im aktuellen globalen Bereich)
quote ... end
ist dasselbe wie :(begin ... end)
Expr(:quote, x)
wird verwendet, um Anführungszeichen in Anführungszeichen darzustellen.
QuoteNode(x)
ist ähnlich wie Expr(:quote, x)
, verhindert jedoch die Interpolation.
Hier ist ein Makro, das alle verwendet:
%Vor%Verwendung:
%Vor% Bearbeiten : Meta.quot(x)
ist in der Tat dasselbe wie Expr(:quote, x)
. Es ist nicht dokumentiert und nirgends erwähnt, aber es war eine bewusste Ergänzung zu den Funktionen, die von Base
( Ссылка ) und ich habe keine Pläne gesehen, es abzulehnen, also können Sie es benutzen.
Tags und Links metaprogramming julia-lang quoting