Uso de espacio de nombres incorporado, nombres predeterminados aquí, función de variables localesHola, tengo una pregunta sobre los espacios de nombres en los scripts del módulo y las funciones dentro de esos scripts.
Según tengo entendido, cualquier variable definida donde Nombres predeterminados aquí () 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 dentro del ámbito del script completo (por ejemplo, dentro de un módulo) o también puede crear variables locales para funciones individuales dentro de un script? ¿Cuál es la forma correcta de crear 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í, función de variables localesHmm, perdón 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;
);Re: uso del espacio de nombres incorporado, nombres predeterminados aquí, función de variables localesNombres predeterminados aquí (1) significa que todos los símbolos no calificados utilizados / creados durante ese sumisión (ejecutando un script) estará en el mismo espacio de nombres Here. Por lo tanto, es más amplio que un solo archivo JSL. Entonces, si A.jsl incluye B.jsl mientras los Nombres predeterminados hasta aquí están habilitados, los símbolos creados por A y B estarán disponibles en el mismo espacio de nombres Aquí.
Para los locales de función, 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í, función de variables locales¡Entiendo! El lenguaje "por envío" es muy útil.
Como seguimiento, cuando se ejecutan diferentes módulos desde App Builder, ¿se incluyen los scripts para cada módulo al iniciar el .jmpapp? ¿O los scripts para cada módulo en realidad se envían por separado en << Crear instancia, de modo que cada módulo tenga su propio espacio de nombres Here?
En resumen, cuando se usa una jmpapp, ¿Aquí se referirá típicamente a cada módulo o a la aplicación en su conjunto?Re: uso del espacio de nombres incorporado, nombres predeterminados aquí, función de variables locales
@mringqui escribió:
¡Entiendo! El lenguaje "por envío" es muy útil.
Como seguimiento, cuando se ejecutan diferentes módulos desde App Builder, ¿se incluyen los scripts para cada módulo al iniciar el .jmpapp? ¿O los scripts para cada módulo en realidad se envían por separado en << Crear instancia, de modo que cada módulo tenga su propio espacio de nombres Here?
En resumen, cuando se usa una jmpapp, ¿Aquí normalmente se referirá a cada módulo o a la aplicación en su conjunto?
@EvanMcCorkle