J'essaie d'obtenir toutes les variables à l'intérieur d'une expression (donc je ne peux pas explicitement en inclure à l'intérieur) comme ceci:
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)
));
Maintenant, cela fonctionne très bien jusqu'à ce que vous décommentiez cet appel de fonction à l'intérieur de l'expression.
Ensuite, je rencontre un problème comme celui-ci.
b = 2;
y = Local Here(
a = 1;
c = a + b;
c;
);
Quelqu'un peut-il penser à un meilleur moyen de le faire? Ou d'un moyen de s'assurer que mon local ici peut voir les noms en dehors de lui-même SANS les mettre dans l'espace de noms local ici? J'ai aussi essayé juste local (). Mais à cause du fonctionnement de {DEFAULT LOCAL}, pas d’amour. J'ai essayé UsingNamespace () également, mais je suis à peu près sûr que cela ne fonctionne pas.