遅延評価のために Expr() を保持しながら、New Script() で変数を選択的に評価するにはどうすればよいですか?私はデータテーブルスクリプトを作成しています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.
保存されたデータ テーブル スクリプトで、一部の変数を選択的に評価し、他の変数を遅延評価用に保持するための正しい方法は何ですか。
自動化とスクリプトRe: 遅延評価のために Expr() を保持しながら、New Script() で変数を選択的に評価するにはどうすればよいですか?一つの選択肢は、コードに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))
)
)
);
)

Re: 遅延評価のために Expr() を保持しながら、New Script() で変数を選択的に評価するにはどうすればよいですか?素敵なトリック:
expr(name expr()) は守る()の同義語です
ここで投票してみてはいかがでしょうか:
expr() の 2 つの意味に対応する 2 つの関数