Raccolta di risorse utili sul web:
- C'è una meravigliosa conferenza di @joseph_morgan nella Discovery Summit Series:
https://community.jmp.com/t5/Abstracts/Using-JSL-to-Develop-Efficient-Robust-Applications-EU-2018-415/ev-p/849638
Joseph spiega i segreti e le possibilità della gestione delle espressioni in JSL , nonché le trappole associate a questa funzionalità.
La lezione si basa sul contenuto di Funzioni di gestione delle espressioni: Parte I - Svelare l'enigma Expr(), NameExpr(), Eval(), ...
- Scrittura dinamica del codice JSL di @Jasean
(guida passo passo attraverso Universal Tricks #1 e #2, vedi sotto)
- La differenza tra stringhe ed espressioni - in 50 righe:
rispondere a un post della community di @Craige_Hales
- Ottimo corso con molti casi applicativi: Sessione 9: JSL avanzato , @jthi
- ulteriori informazioni possono essere trovate nella Guida allo scripting: advanced-expressions-macros-and-lists
Nozioni di base
interno:
#062 - gestione delle espressioni in JSL
#092 - gestione delle espressioni
| 1 |
non valutare l'espressione (2+1), basta memorizzarlo nella variabile x |
x= Espr (2+1) |
| 2 |
ottenere l'espressione che è memorizzata in x |
Nome Espr (x) |
| 3 |
valutazione della forza |
Valutazione (myexpr) |
| 4 |
valutare xyz e sostituire Espr(xyz) con il valore di ritorno |
Valutazione Espr( ... Espr(xyz)) |
*) NB: in 1 e 4, è la stessa funzione " Espr(...)" - ma con l'effetto opposto:
In 1, il contenuto di Espr non viene valutato, in 4 viene valutato SOLO il contenuto di Espr
3 trucchi universali
| 1 |
pre-valutare parti di un'espressione tramite Valutazione Expr() ... quindi valuta l'espressione tramite Valutazione() risolve il 90% (con opzione 2: 99%) di tutti i problemi |
Eval( Valutazione Espr ( ... Esp. (eval 1st) ...)) opzione 2: Eval( Valutazione Espr ( ... Esp. (Nome Expr( )) ...))
|
| 2 |
Risolve lo stesso problema al 99% # 1 - opzione 2 |
Eval(sostituisci(Espr(), Espr(), Nome Espr() ))
|
| 3 |
ultimate trick for riferimenti di colonna ( @jthi, e.g. Sessione 9: JSL avanzato @33min ) |
Nome Espr ( come colonna ("nome colonna" o : colonna)) |
Nota bene:
Alcune funzioni valutano i propri argomenti, altre no, alcune valutano solo alcuni dei propri argomenti: ci sono funzioni come Testa() che valutano i propri argomenti fino a un certo punto: Head valuta il proprio argomento? - e altre valutano il proprio argomento, ma se si tratta di una singola variabile, si comportano come Nome Expr() : le eccezioni sono le utilità Show, Write e Print...
Sfortunatamente, la maggior parte di questi dettagli non è disponibile per gli utenti. Gli utenti devono fare delle ipotesi.
Ecco un desiderio dell'editor JSL di aiutare gli utenti mostrando queste informazioni in modo interattivo: Evidenziazione avanzata della sintassi nell'editor JSL: la funzione valuta il suo argomento?
-> Se vuoi ottenere questo supporto automatico, segui il link e vota!
Esempi dalla comunità:
[Di piùContenitori di argomenticosì]
Ciao @hogi ,
Grazie per aver consolidato queste informazioni e aver riunito molte di queste informazioni. Il discorso sembra davvero istruttivo.
Mi piace il modo in cui puoi fare le cose in modi diversi in JMP e in JSL, ma a volte ci sono troppi modi diversi che sono molto specifici per il caso in questione e questo può diventare un po' complicato quando si tenta di creare un codice generico e in grado di gestire molti scenari diversi.
Grazie!,
DS
JSL e variabili: 3 aspetti di cui dovresti essere a conoscenza quando scrivi codice JSL.
Problemi diversi, sempre la stessa soluzione : )
la soluzione?
-> basta leggere il post principale.
c= 5;
col = Name Expr(:height);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = graph Builder(); framebox = report(gb)[FrameBox(1)];
// issues with variables in a message
// all 3 of them look quite innocent
// but none of them will survive a restart
New Column ("rescaled", Formula (c * :height));
dt << New Column ("rescaled", Formula (5 * col));
framebox << Add Graphics Script(Y Function( c * x, x ) );
// no issue here:
dt << concatenate(dt);
dt << new column(c, formula(3));Qualcuno potrebbe pensare: non usare mai una variabile in un messaggio!
Ma questo va decisamente troppo oltre: gli ultimi due esempi non presentano alcun problema.