rendre les fonctions personnalisées NESTED utilisables dans les formulesSalut tout le monde,
J'essaie de créer un complément pour effectuer des calculs complexes basés sur la température et la pression.
mon approche consiste à créer un script, puis à le joindre à un complément invisible. Utilisez ensuite les formules dans le pluging, dans Formulas via global:myfunc().
Si j'ai une seule fonction sur mon script, cette approche fonctionne ( voir le sujet ).
Cependant, si j'ai deux fonctions imbriquées dans un script jsl. Cette approche ne fonctionne plus.
Voici mon script jsl :
myfun1 = Function({x},
a = x+10;
Return(a);
);
myfun2 = Function({x},
b = myfun1(x)+10;
Return(b);
);Donc, ce que je voudrais faire en pratique, c'est appeler myfun2 depuis l'éditeur de formules comme suit :

mais j'obtiens l'erreur suivante :

Y a-t-il un moyen de faire cela?
Re : rendre les fonctions personnalisées NESTED utilisables dans les formulesMerci pour le conseil, cela fonctionne comme un charme maintenant ! 
Je pensais que:
<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>
allait suffire dans ce cas. Je comprends maintenant pourquoi j'ai besoin de spécifier clairement un espace de noms.
Re : rendre les fonctions personnalisées NESTED utilisables dans les formulesMa suggestion, si vous n'utilisez pas JMP 14, serait de créer toutes vos fonctions dans un espace de noms séparé.Cela rendra les fonctionsa disponibles pour toutes les tables de données et tous les scripts.Vous pouvez également structurer votre complément pour modifier réellement le script jmpstartup.jsl afin de créer l'espace de noms et de le remplir avec toutes les fonctions, rendant ainsi les fonctions automatiquement disponibles chaque fois que quelqu'un démarre JMP.
names default to here(1);
GlobalFunction=new namespace("GlobalFunction");
GlobalFunction:ShowValue = Function({x},show(x));
zippy=10;
GlobalFunction:ShowValue(zippy)Re : rendre les fonctions personnalisées NESTED utilisables dans les formulesSalut, merci pour la réponse.
Eh bien, le problème est un peu plus compliqué que l'exemple de script en pièce jointe. Le script que je veux vraiment créer se compose de plus de 30 fonctions et certaines d'entre elles en appellent plusieurs autres.
L'idée est que ce script est mis à la disposition d'autres personnes via un complément JMP. Ainsi, si le complément est installé, ils peuvent accéder aux fonctions à tout moment depuis n'importe quelle table.
Je veux essentiellement avoir l'équivalent d'une classe python/C++ avec des fonctions qui peuvent être appelées.
Ce que je veux savoir, c'est: comment puis-je le faire fonctionner à partir de la formule de colonne?
Si j'appelle myfun2 dans le script, cela ne me donne pas d'erreur. Mais je l'ai quand je l'exécute depuis le formule de la colonne.
Je sais aussi que dans JMP14 est officiellement pris en charge pour introduire ses propres formules de costumes ( lien ).
Je suis à peu près sûr que cela devrait être possible, c'est juste une question de savoir comment le faire correctement dans jsl/JMP et c'est exactement ma question.
Re : rendre les fonctions personnalisées NESTED utilisables dans les formulesJe serais très prudent avec l'utilisation de fonctions personnalisées définies par l'utilisateur dans une formule de colonne, car une fois que vous fermez JMP, puis ouvrez à nouveau cette table, ces formules de colonne vont se casser car ces noms de fonction ne seront pas définis.Peut-être que ce n'est pas une préoccupation ici, mais je pensais juste le souligner.
Il y a plusieurs façons d'aborder cela.Vous pouvez adopter une approche utilisant des expressions, par exemple.Ou vous pouvez mettre les définitions de myfun1 et myfun2 directement dans la formule de la colonne :
Qui colle juste ceci dans la formule:
myfun1 = Function( {x},
a = x + 10;
Return( a );
);
myfun2 = Function( {x},
b = myfun1( x ) + 10;
Return( b );
);
myfun2( 1 );