Estoy tratando de obtener todas las variables dentro de cualquier expresión (por lo que no puedo abarcar explícitamente el alcance dentro de ella) así:
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)
));
Ahora eso funciona muy bien hasta que se descomente esa función de llamada dentro de la expresión.
Entonces me encuentro con un problema como este.
b = 2;
y = Local Here(
a = 1;
c = a + b;
c;
);
¿Alguien puede pensar en una mejor manera de hacer esto? ¿O de una manera de asegurarse de que mi local aquí pueda ver nombres fuera de sí mismo SIN PONERlos en el espacio de nombres local? También he intentado sólo local (). Pero debido a la forma en que funciona {DEFAULT LOCAL}, no hay amor. También intenté usarNamespace () pero estoy bastante seguro de que no está funcionando.