Inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?In aggiunta alla risposta di @jthi su Inserisci il contenuto dell'espressione Parse anziché il nome della variabile in un nuovo script , come inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?
Sto utilizzando 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 ) ) ) ) );
Automazione e scriptingFinestreRe: Inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?Un bel trucco in JMP:
puoi premere il tasto Invio sul tastierino numerico per eseguire una riga di codice.
Questo è molto utile per il debug.
un altro trucco:
fare clic con il tasto destro del mouse nella finestra dello script e attivare:

l'ultimo trucco:
contrassegna Valutazione Espr(...) all'interno di un Valutazione() ed "eseguilo" per verificare se l'espressione è quella che ti aspetti:

Questo mostra dove scrivi
// Evaluate e1 here.
Nome Espressione prende solo l'espressione che è memorizzata nella variabile. Non la valuta. e1 rimane e1 .
Modificare:
Ma forse è questo che vuoi ottenere? Nessuna domanda, solo un commento?
Lo script JSL scriverà "e1" nello script della tabella.
E JMP proverà a valutare e1 quando l'utente esegue lo script della tabella.
Ciò significa che devi definire e1 nel contesto della tabella dati, altrimenti riceverai un messaggio di errore:

[e1 è semplicemente definito all'interno dello spazio dei nomi here dello script]
Re: Inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?Non sono esattamente sicuro di cosa stai cercando, dato che e1 è già stato definito alla riga 5. Cosa desideri avere all'interno di e3? Qualcosa del genere
e1 = Expr(Print("Code"));
e1; //e2
Print("Code2"); //e2
O
e1 = Expr(Print("Code"));
Print("Code");
Print("Code2"); //e2Re: Inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?Grazie @hogi e @jthi per il contributo. Sono riuscito a ottenere il risultato che cercavo usando una funzione.
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: Inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?Puoi anche inserirlo in Expr extra
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: Inserire un oggetto Expr() in un altro script come oggetto Expr() non valutato da utilizzare in seguito?Molto intelligente! Grazie.