Hacer que las funciones personalizadas de NESTED sean utilizables en fórmulas.Hola a todos,
Estoy tratando de construir un complemento para hacer algunos cálculos complejos basados en la temperatura y la presión.
Mi enfoque es hacer un script y luego adjuntarlo a un complemento invisible. Luego use las fórmulas en el complemento, en Fórmulas a través de global: myfunc ().
Si tengo una sola función en mi script, este enfoque funciona ( ver tema ).
Sin embargo, si tengo dos funciones anidadas en un script jsl. Este enfoque ya no funciona.
Aquí está mi script jsl:
myfun1 = Function({x},
a = x+10;
Return(a);
);
myfun2 = Function({x},
b = myfun1(x)+10;
Return(b);
);Entonces, lo que me gustaría hacer en la práctica es llamar a myfun2 desde el editor de fórmulas de la siguiente manera:

pero me sale el siguiente error:

¿Hay alguna forma de hacer esto?
Re: hacer que las funciones personalizadas de NESTED sean utilizables en fórmulasGracias por la sugerencia, funciona como un encanto ahora! 
Pensé 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>
Estaba dispuesto a ser suficiente en este caso. Ahora entiendo por qué necesito especificar claramente un espacio de nombres.
Re: hacer que las funciones personalizadas de NESTED sean utilizables en fórmulasMi sugerencia, si no está utilizando JMP 14, sería crear todas sus funciones en un espacio de nombres separado. Eso hará que las funciones estén disponibles para todas las tablas de datos y scripts. También puede estructurar su complemento para modificar realmente el script jmpstartup.jsl para crear el espacio de nombres y poblarlo con todas las funciones, por lo tanto, las funciones están disponibles automáticamente cada vez que alguien inicia JMP.
names default to here(1);
GlobalFunction=new namespace("GlobalFunction");
GlobalFunction:ShowValue = Function({x},show(x));
zippy=10;
GlobalFunction:ShowValue(zippy)Re: hacer que las funciones personalizadas de NESTED sean utilizables en fórmulasHola, gracias por la respuesta.
Bueno, el problema es un poco más complicado que el script de ejemplo adjunto. El script que realmente quiero hacer consta de más de 30 funciones y algunas de ellas llaman varias más.
La idea es que este script esté disponible para otras personas a través de un complemento JMP. Entonces, si el complemento está instalado, pueden acceder a las funciones en cualquier momento desde cualquier tabla.
Básicamente, quiero tener el equivalente de una clase python / C ++ con funciones en la que se pueda acceder.
Lo que quiero saber es: ¿cómo puedo hacer que funcione a partir de la fórmula de la columna?
Si llamo a myfun2 dentro del script, no me da un error. Pero lo tengo cuando lo ejecuto desde el fórmula de columna.
También sé que en JMP14 se admite oficialmente para introducir fórmulas de vestuario propias ( enlazar ).
Estoy bastante seguro de que esto debería ser posible, es solo una cuestión de cómo hacerlo correctamente en jsl / JMP y esa es exactamente mi pregunta.
Re: hacer que las funciones personalizadas de NESTED sean utilizables en fórmulasTendría mucho cuidado al usar funciones personalizadas definidas por el usuario en una fórmula de columna porque una vez que cierre JMP y luego vuelva a abrir esa tabla, esas fórmulas de columna se romperán ya que esos nombres de función no estarán definidos. Tal vez eso no sea una preocupación aquí, pero solo pensé en señalar eso.
Hay bastantes maneras de abordar esto. Podrías tomar una aproximación usando expresiones, por ejemplo. O puede poner las definiciones de myfun1 y myfun2 directamente en la fórmula de la columna:
Lo que es simplemente pegar esto en la fórmula:
myfun1 = Function( {x},
a = x + 10;
Return( a );
);
myfun2 = Function( {x},
b = myfun1( x ) + 10;
Return( b );
);
myfun2( 1 );