Uso del espacio de nombres incorporado, nombres predeterminados aquí, funciones de variables localesHola, tengo una pregunta sobre los espacios de nombres en los scripts de módulos y las funciones dentro de esos scripts.
Según tengo entendido, cualquier variable definida donde Names Default to Here() sea verdadero se asignará en un espacio de nombres "aquí". De lo que no estoy seguro es del alcance de ese espacio de nombres. ¿Está "aquí" siempre en el ámbito de la secuencia de comandos completa (por ejemplo, dentro de un módulo) o también puede crear variables locales para funciones individuales dentro de una secuencia de comandos? ¿Cuál es la forma correcta de hacer variables locales dentro de una función? ¿Hay alguna forma de que las variables definidas en cada función sean locales solo para esa función y no para el script completo? Lo que estoy imaginando es algo como a continuación.
//Script to define different scopes of variables<BR />Names Default to Here(1); //set variables to be scoped to this script by default<BR />a = 1;<BR />b = 2;<BR /><BR />Function1 = Function({},<BR /> Names Default to Here(1);<BR /> c = 3;<BR />);<BR /><BR />Function2 = Function({},<BR /> Names Default to Here(1);<BR /> d = 4;<BR />);@lbrickweg @jcimini
Re: uso del espacio de nombres incorporado, nombres predeterminados aquí, funciones de variables locales
@mringqui escribió:
¡Entiendo! El lenguaje 'por presentación' es muy útil.
Como seguimiento, al ejecutar diferentes módulos de App Builder, ¿se incluyen los scripts para cada módulo al iniciar .jmpapp? ¿O los scripts para cada módulo en realidad se envían por separado en << Create Instance, de modo que cada módulo tenga su propio espacio de nombres Here?
En resumen, al usar jmpapp, ¿aquí se referirá típicamente a cada módulo o a la aplicación como un todo?
@EvanMcCorkle
Re: uso del espacio de nombres incorporado, nombres predeterminados aquí, funciones de variables locales¡Entiendo! El lenguaje 'por presentación' es muy útil.
Como seguimiento, al ejecutar diferentes módulos de App Builder, ¿se incluyen los scripts para cada módulo al iniciar .jmpapp? ¿O los scripts para cada módulo en realidad se envían por separado en << Create Instance, de modo que cada módulo tenga su propio espacio de nombres Here?
En resumen, al usar jmpapp, ¿aquí se referirá típicamente a cada módulo o a la aplicación como un todo?Re: uso del espacio de nombres incorporado, nombres predeterminados aquí, funciones de variables localesNombres predeterminados hasta aquí (1) significa que todos los símbolos no calificados usados/creados durante ese envío (ejecutando un script) estará en el mismo espacio de nombres Here. Por lo tanto, es más amplio que un solo archivo JSL. Por lo tanto, si A.jsl incluye B.jsl mientras los nombres predeterminados aquí están habilitados, los símbolos creados por A y B estarán disponibles en el mismo espacio de nombres Aquí.
Para funciones locales, debe usar una lista de locales:
/* Default Local */
slow identity = Function({x}, {Default Local},
x squared = x*x; // unqualified name x squared is defaulted to function local
Sqrt(x squared)
);
/* Or list them explicitly */
slow identity = Function({x}, {x squared},
x squared = x*x; // local because we declared it above
Sqrt(x squared)
);
/* Or qualify them */
slow identity = Function({x},
local:x squared = x*x; // qualify to local explicitly
Sqrt(x squared)
);Re: uso del espacio de nombres incorporado, nombres predeterminados aquí, funciones de variables localesHmm, lo siento por el formato allí
//Script to define different scopes of variables
Names Default to Here(1); //set variables to be scoped to this script by default
a = 1;
b = 2;
Function1 = Function({},
Names Default to Here(1); //set variables set in Function1 to be scoped only to Function1
c = 3;
);
Function2 = Function({},
Names Default to Here(1); //set variables set in Function2 to be scoped only to Function2
d = 4;
);