Ich versuche, alle Variablen in einen beliebigen Ausdruck zu bekommen (ich kann also nicht explizit in den Ausdruck einfließen):
Names default to here(1);
some_f = function({x},
{c},
c=1;
return(x);
);
some_expr = Expr(
a=1;
//b = some_f(1);
);
//trying to get all the variables inside some_expr
Eval(Substitute(
Expr(
local here(
DV_EXPR;
associative array(namespace("here") << Get Contents);
)
),
Expr(DV_EXPR), nameexpr(some_expr)
));
Nun, das funktioniert gut, bis die Funktion innerhalb des Ausdrucks unkommentiert wird.
Dann stoße ich auf ein Problem wie dieses.
b = 2;
y = Local Here(
a = 1;
c = a + b;
c;
);
Kann sich jemand einen besseren Weg vorstellen, dies zu tun? Oder eine Möglichkeit, um sicherzustellen, dass mein Local hier Namen außerhalb von sich selbst sehen kann, OHNE sie in den Local-Namespace zu setzen? Ich habe auch nur local () ausprobiert. Aber aufgrund der Funktionsweise von {DEFAULT LOCAL} keine Liebe. Ich habe es auch mit UsingNamespace () versucht, aber ich bin mir ziemlich sicher, dass es nicht funktioniert.