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가지 함수