Come valutare selettivamente le variabili in New Script() preservando Expr() per la valutazione differita?Sto creando uno script di tabella dati utilizzandoNew Script()che deve essere valutato in seguito quando un utente fa clic su di esso. Devo sostituire alcune variabili al momento della creazione dello script (come un percorso di file) preservandoExpr()chiamate che dovrebbero essere valutate solo quando lo script viene effettivamente eseguito.
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 );
);
));
);
);
Il problema: 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.
Qual è l'approccio corretto per valutare selettivamente alcune variabili, preservandone altre per la valutazione differita negli script delle tabelle di dati memorizzati?
Automazione e scriptingRe: Come valutare selettivamente le variabili in New Script() preservando Expr() per la valutazione differita?Un'opzione è aggiungere Expr(Name Expr()) al tuo codice
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))))
)));
);
));
Quando esegui solo la parte EvalExpr otterrai il seguente script
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: Come valutare selettivamente le variabili in New Script() preservando Expr() per la valutazione differita?bel trucco:
expr(nome expr()) come sinonimo di proteggere()
forse vota qui:
2 funzioni per i 2 significati di expr()