Hola a todos,
Estoy trabajando con Application Builder y necesito muchas ventanas de módulos y secuencias de comandos. Me pregunto si hay una manera de "enviar" o "empujar"/"tirar" variables hacia y desde diferentes espacios de nombres de secuencias de comandos.
Hasta ahora, he estado definiendo la mayoría de las variables en el espacio de nombres de la aplicación, pero está empezando a estar muy ocupado y preferiría tener los scripts en sus módulos relevantes donde se hace referencia a las variables en el espacio de nombres de la aplicación según sea necesario. Una solución sería definir variables globales, pero me preocupan los posibles problemas futuros con la denominación de variables. ¿Hay alguna manera de evitar esto? Alternativamente, ¿hay alguna manera de configurar "Nombres predeterminados aquí" o algo similar para que las variables que defino tengan como valor predeterminado el espacio de nombres de la aplicación y todas las secuencias de comandos del módulo puedan hacer referencia a ellas?
Agradezco cualquier idea!
Hola @EstelleS -
Dentro de cualquier script de aplicación (nivel de aplicación o nivel de módulo), puede acceder al espacio de nombres de la aplicación con:
appNS = thisApplication<<Get Namespace;
Con eso, debería poder establecer/obtener valores variables explícitamente en el ámbito de la aplicación.
Las variables sin ámbito dentro de un script de módulo solo serán visibles dentro del módulo dado de manera predeterminada.Si necesita que un módulo acceda a las variables dentro de otro módulo, entonces el primer módulo deberá tener una referencia al segundo.Por ejemplo, puede hacer que module1 cree una instancia de module2 con:
module2 << CreateInstance(thisModuleInstance);
Las variables 'thisApplication' y 'thisModuleInstance' son variables automáticas que hacen referencia a la aplicación y la instancia del módulo (actual).Ahora, la instancia de module2 puede acceder a las variables en la instancia de module1 accediendo al espacio de nombres del módulo que se pasó:
OnModuleLoad({callingModule},
ns = callingModule << Get Namespace;
);
¡Espero que eso ayude!
-Dan