我試圖獲取任何表達式中的所有變量(所以我不能在其中顯式範圍),如下所示:
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)
));
現在這很有效,直到取消註釋表達式中的函數調用。
然後我遇到了像這樣的問題。
b = 2;
y = Local Here(
a = 1;
c = a + b;
c;
);
誰能想到更好的方法來做到這一點?或者一種方法來確保我的本地可以看到自己的名字而不將它們放在本地命名空間中?我也嘗試過local()。但由於{DEFAULT LOCAL}的工作方式,沒有愛。 嘗試使用UsingNamespace(),但我很確定它不起作用。