如何選擇性地評估 New Script() 中的變量,同時保留 Expr() 以進行延遲評估?我正在使用建立數據表腳本New Script()稍後用戶點擊時需要進行評估。我需要在腳本創建時替換一些變數(例如檔案路徑),同時保留Expr()僅當腳本實際運行時才應評估呼叫。
file_path = "C:\MyData\slopes.jmp";
dt << New Script("Plot Slopes",
dt_slopes = Open( file_path );
slope_array = dt_slopes:slope << Get Values;
nw = New Window( "Slope Plots",
gb = Graph Box()
);
framebox = gb[Frame Box(1)];
For Each( {slope}, slope_array,
Eval( Eval Expr(
framebox << Add Graphics Script(
Y Function( Expr(slope) * x, x );
);
));
);
);
問題: I need file_path to be evaluated and inserted as a literal string when creating the script, but the Expr(slope) inside the For Each loop must remain unevaluated until the script runs (when the user clicks it).
If I wrap everything in Eval(Eval Expr()) to substitute file_path, it also evaluates Expr(slope)prematurely, causing an error since slope doesn't exist yet.
在儲存的資料表腳本中,選擇性地評估某些變數同時保留其他變數以供延遲評估的正確方法是什麼?
自動化和腳本回覆:如何選擇性地評估 New Script() 中的變量,同時保留 Expr() 以進行延遲評估?一種選擇是將一些 Expr(Name Expr()) 新增到您的程式碼中
Names Default To Here(1);
file_path = "C:\MyData\slopes.jmp";
Eval(EvalExpr(
dt << New Script(
"Plot Slopes",
dt_slopes = Open(Expr(file_path));
slope_array = dt_slopes:slope << Get Values;
nw = New Window("Slope Plots", gb = Graph Box());
framebox = gb[Frame Box(1)];
Expr(Name Expr(For Each({slope}, slope_array,
Eval(Eval Expr(framebox << Add Graphics Script(Y Function(Expr(slope) * x, x))))
)));
);
));
當你只執行 EvalExpr 部分時,你將得到以下腳本
dt << New Script(
"Plot Slopes",
dt_slopes = Open("C:\MyData\slopes.jmp");
slope_array = dt_slopes:slope << Get Values;
nw = New Window("Slope Plots", gb = Graph Box());
framebox = gb[Frame Box(1)];
For Each({slope}, slope_array,
Eval(
Eval Expr(
framebox << Add Graphics Script(Y Function(Expr(slope) * x, x))
)
)
);
)

回覆:如何選擇性地評估 New Script() 中的變量,同時保留 Expr() 以進行延遲評估?不錯的技巧:
expr(名稱 expr())作為保護()的同義詞
也許在這裡投票:
expr() 的兩種意義對應兩種函數