Expr() オブジェクトを、後で使用するために評価されていない Expr() オブジェクトとして別のスクリプトに挿入しますか?変数名ではなく 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 キーを押すと、1 行のコードが実行できます。
これはデバッグに非常に役立ちます。
もう一つのトリック:
スクリプト ウィンドウを右クリックしてアクティブにします。

最後のトリック:
Eval( ) 内で Eval Expr(...)をマークし、それを「実行」して、式が期待どおりであるかどうかを確認します。

これは、あなたが書いた場所を示しています
// Evaluate e1 here.
Name Expr は、変数に格納されている式を受け取るだけです。評価は行いません。 電子1は電子1のままです。
編集:
しかし、おそらくこれがあなたが達成したいことなのでしょうか? 質問ではなく、単なるコメントですか?
JSL スクリプトはテーブル スクリプトに「e1」を書き込みます。
そして、JMP はユーザーがテーブル スクリプトを実行すると e1 を評価しようとします。
つまり、データ テーブルのコンテキストで e1 を定義する必要があります。そうしないと、エラー メッセージが表示されます。

[e1 はスクリプトの here 名前空間内で定義されています]
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() オブジェクトとして別のスクリプトに挿入しますか?とても賢いですね!ありがとう。