rendere le funzioni personalizzate NESTED utilizzabili nelle formuleCiao a tutti,
Sto cercando di creare un'aggiunta per eseguire calcoli complessi basati su temperatura e pressione.
il mio approccio è creare uno script e quindi collegarlo a un componente aggiuntivo invisibile. Quindi usa le formule nel pluging, in Formule tramite global:myfunc().
Se ho una singola funzione sul mio script, questo approccio funziona ( vedi argomento ).
Tuttavia, se ho due funzioni nidificate in uno script jsl. Questo approccio non funziona più.
Ecco il mio script jsl:
myfun1 = Function({x},
a = x+10;
Return(a);
);
myfun2 = Function({x},
b = myfun1(x)+10;
Return(b);
);Quindi quello che vorrei fare in pratica è chiamare myfun2 dall'editor delle formule come segue:

ma ottengo il seguente errore:

C'è un modo per fare questo?
Re: rendere le funzioni personalizzate NESTED utilizzabili nelle formuleGrazie per il suggerimento, ora funziona come un incantesimo! 
Ho pensato che:
<SPAN class="token function">names default to here</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
sarebbe bastato in questo caso. Ora capisco perché ho bisogno di specificare chiaramente uno spazio dei nomi.
Re: rendere le funzioni personalizzate NESTED utilizzabili nelle formuleIl mio suggerimento, se non stai usando JMP 14, sarebbe quello di creare tutte le tue funzioni in uno spazio dei nomi separato.Ciò renderà le funzionia disponibili per tutte le tabelle di dati e gli script.Potresti anche strutturare il tuo addin per modificare effettivamente lo script jmpstartup.jsl per creare lo spazio dei nomi e per popolarlo con tutte le funzioni, quindi rendendo le funzioni automaticamente disponibili ogni volta che qualcuno avvia JMP.
names default to here(1);
GlobalFunction=new namespace("GlobalFunction");
GlobalFunction:ShowValue = Function({x},show(x));
zippy=10;
GlobalFunction:ShowValue(zippy)Re: rendere le funzioni personalizzate NESTED utilizzabili nelle formuleCiao, grazie per la risposta.
Bene, il problema è un po' più complicato dello script di esempio in allegato. Lo script che voglio davvero realizzare consiste in oltre 30 funzioni e alcune di esse ne richiamano molte altre.
L'idea è che questo script sia reso disponibile ad altre persone tramite un componente aggiuntivo JMP. Quindi, se il componente aggiuntivo è installato, possono accedere alle funzioni in qualsiasi momento da qualsiasi tabella.
Fondamentalmente voglio avere l'equivalente di una classe python/C++ con funzioni che possono essere richiamate.
Quello che voglio sapere è: come faccio a farlo funzionare dalla formula della colonna?
Se chiamo myfun2 all'interno dello script, non viene visualizzato alcun errore. Ma ce l'ho quando lo eseguo da formula di colonna.
So anche che in JMP14 è ufficialmente supportato l'introduzione di formule personalizzate ( collegamento ).
Sono abbastanza sicuro che questo dovrebbe essere possibile, è solo una questione di come farlo correttamente in jsl/JMP e questa è esattamente la mia domanda.
Re: rendere le funzioni personalizzate NESTED utilizzabili nelle formuleFarei molta attenzione con l'utilizzo di funzioni personalizzate definite dall'utente in una formula di colonna perché una volta chiuso JMP e quindi aperto di nuovo quella tabella, quelle formule di colonna si interromperanno poiché quei nomi di funzione non saranno definiti.Forse non è un problema qui, ma ho solo pensato di farlo notare.
Ci sono molti modi per avvicinarsi a questo.Potresti adottare un approccio usando le espressioni, ad esempio.Oppure potresti inserire le definizioni di myfun1 e myfun2 direttamente nella formula della colonna:
Che sta semplicemente incollando questo nella formula:
myfun1 = Function( {x},
a = x + 10;
Return( a );
);
myfun2 = Function( {x},
b = myfun1( x ) + 10;
Return( b );
);
myfun2( 1 );