나중에 사용하기 위해 평가되지 않은 Expr() 객체로 다른 스크립트에 Expr() 객체를 삽입하시겠습니까?@jthi 의 답변에 변수 이름이 아닌 Parse 표현식의 내용을 새 스크립트에 삽입하는 것에 덧붙여, 나중에 사용할 평가되지 않은 Expr() 객체로 Expr() 객체를 다른 스크립트에 삽입하는 방법은 무엇입니까?
저는 JMP 18.1.2를 사용하고 있습니다
Names Default To Here( 1 );
dt = New Table( "My Table" );
e1 = Expr(
Print( "Run some code." )
);
e2 = Expr(
e1;
Print( "Run some other code." );
);
e3 = Eval Expr(
Expr( Name Expr( e1 ) ); // Define, but do not evaluate e1 here.
Expr( Name Expr( e2 ) ); // Evaluate e1 here.
);
Show( e3 );
Eval( Eval Expr( dt << New Script( "Test", Expr( Name Expr( e3 ) ) ) ) );
자동화 및 스크립팅윈도우Re: Expr() 객체를 나중에 사용하기 위해 평가되지 않은 Expr() 객체로 다른 스크립트에 삽입합니까?JMP의 멋진 트릭:
숫자 키보드에서 Enter 키를 누르면 한 줄의 코드를 실행할 수 있습니다.
이것은 디버깅에 매우 유용합니다.
또 다른 요령:
스크립트 창을 마우스 오른쪽 버튼으로 클릭하고 활성화합니다.

마지막 트릭:
Eval( ) 내부에 Eval Expr(... )를 표시하고 표현식이 예상한 대로인지 확인하기 위해 "실행"합니다.

이것은 당신이 쓰는 곳을 보여줍니다
// Evaluate e1 here.
이름 Expr은 변수에 저장된 표현식을 가져옵니다. 이를 평가하지 않습니다. e1은 이1 로 유지됩니다.
편집하다:
하지만 아마 이게 당신이 이루고 싶은 것일 수도 있겠죠? 질문은 없고, 그냥 코멘트만?
JSL 스크립트는 테이블 스크립트에 "e1"을 씁니다.
그리고 사용자가 테이블 스크립트를 실행할 때 JMP는 e1을 평가하려고 시도합니다.
즉, 데이터 테이블의 컨텍스트에서 e1을 정의해야 합니다. 그렇지 않으면 다음과 같은 오류 메시지가 표시됩니다.

[e1은 스크립트의 여기 네임스페이스 내에서 정의됩니다.]
Re: Expr() 객체를 나중에 사용하기 위해 평가되지 않은 Expr() 객체로 다른 스크립트에 삽입합니까?e1이 5번째 줄에 이미 정의되어 있기 때문에 정확히 무엇을 원하는지 잘 모르겠습니다. e3 안에 무엇을 넣고 싶으신가요? 다음과 같은 것
e1 = Expr(Print("Code"));
e1; //e2
Print("Code2"); //e2
또는
e1 = Expr(Print("Code"));
Print("Code");
Print("Code2"); //e2Re: Expr() 객체를 나중에 사용하기 위해 평가되지 않은 Expr() 객체로 다른 스크립트에 삽입합니까?@호기 와 @jthi 의 의견에 감사드립니다. 함수를 사용하여 제가 찾던 결과를 얻을 수 있었습니다.
Names Default To Here( 1 );
dt = New Table( "My Table" );
e1 = Expr(
f1 = Function( {},
{Default Local},
Print( "Run some code." )
)
);
e2 = Expr(
f1();
Print( "Run some other code." );
);
e3 = Expr(
f1();
Print( "Run even more code." );
);
e4 = Eval Expr(
Expr( Name Expr( e1 ) ); // Define, but do not evaluate e1 here.
Expr( Name Expr( e2 ) ); // Evaluate e1 here.
Expr( Name Expr( e3 ) ); // Evaluate e1 here.
);
Eval( Eval Expr( dt << New Script( "Test", Expr( Name Expr( e4 ) ) ) ) );Re: Expr() 객체를 나중에 사용하기 위해 평가되지 않은 Expr() 객체로 다른 스크립트에 삽입합니까?또한 추가 Expr로 래핑할 수도 있습니다.
Names Default To Here(1);
dt = New Table("My Table");
e0 = Expr(e1 = Expr(Print("Run some code.")));
e2 = Expr(
e1;
Print("Run some other code.");
);
e3 = Eval Expr(
Expr(Name Expr(e0)); // Define, but do not evaluate e1 here.
Expr(Name Expr(e2)); // Evaluate e1 here.
);
Show(e3);
Eval(Eval Expr(dt << New Script("Test", Expr(Name Expr(e3)))));

Re: Expr() 객체를 나중에 사용하기 위해 평가되지 않은 Expr() 객체로 다른 스크립트에 삽입합니까?정말 똑똑하네요! 고맙습니다.