El comportamiento del ámbito de las variables para print() debería coincidir con todo lo demás.¿Qué inspiró esta petición en la lista de deseos?
Pasé mucho tiempo depurando un problema con el ámbito de las variables. Si se usa `{default local}` dentro de una función (algo que hago casi siempre), la función no puede acceder a las variables globales a menos que el ámbito se especifique explícitamente con `::` (lo cual desconocía). Sin embargo, `Print()` busca automáticamente las variables incluso sin `::`, y dado que `Print()` es una herramienta de depuración bastante básica, ¡esto resulta muy confuso!
¿Qué mejora le gustaría ver?
Print() debería comportarse igual en términos de ámbito de variables que todo lo demás.
¿Por qué es importante esta idea?
El comportamiento actual es ilógico e incoherente.
JMP19.1.1.
Automatización y secuencias de comandosRe: El comportamiento del ámbito de las variables para print() debería coincidir con todo lo demás - Estado cambiado a: Necesita informaciónHola @JohnJoyceFlusso : Gracias por enviar la sugerencia. ¿Podrías proporcionar un script que ilustre este comportamiento?
Re: El comportamiento del ámbito de las variables para print() debería coincidir con todo lo demás.Aquí hay un script mínimo que ilustra el problema: Print() funciona pero msgbox() no.
Nota: No se trata de una función útil, sino simplemente de una demostración del problema.
Desafortunadamente, Print() se comporta de manera diferente a todo lo demás en lo que respecta al ámbito de las variables.
Nunca he conocido otro idioma que haga algo así. Esto parece estar roto.
Mi sugerencia es que Print() no debería ser diferente a todo lo demás.
dummy = "Hello";
test = Function( {},
{default local},
Print( dummy );
msgbox( dummy );
);
test();
Re: El comportamiento del ámbito de las variables para print() debería coincidir con todo lo demás.Disculpen si he confundido las cosas con msgbox(), que en realidad es una función mía, no integrada.
Aquí hay un ejemplo que muestra mi punto... el primer intento con botones de radio no muestra opciones, ya que "options" no está definido localmente; y sin embargo, print() puede acceder a él mágicamente.
Una vez que defino las opciones localmente, los mismos botones de opción funcionan la segunda vez.
La cuestión es que print() no debería comportarse de forma diferente a cualquier otra cosa, ya que eso dificulta su uso como herramienta de depuración.
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
New Window( "Pick one",
<
<MODAL></MODAL>
<BR /> <BR />
Re: El comportamiento del ámbito de las variables para print() debería coincidir con todo lo demás.@JohnJoyceFlusso
Aún puedes acceder a la variable "options" desde dentro de la función usando eval( eval expr( ) ). Esto me funciona:
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
eval( eval expr( New Window( "Pick one",
<
<MODAL></MODAL>
Re: El comportamiento del ámbito de las variables para print() debería coincidir con todo lo demás.Gracias, sí, funciona (al igual que acceder a 'options' como ::options, como me indicaron los de soporte).
Mi problema sigue siendo que Print() se comporta de manera diferente a todo lo demás, lo cual es ilógico.