Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 497
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Aquí dice en blancohttps://docs.mql4.com/ru/basis/operators/for
https://docs.mql4.com/ru/basis/variables/variable_scope
Gracias, pero ya he leído el primer enlace y el segundo confirma la lógica que utilicé al escribir el código.
Sin embargo, me confunde esta afirmación en el segundo enlace "... Hayotra variable con el mismo nombre fuera de este bucle... "Se deduce que el valor de una variable global sigue siendo el mismo a pesar de que dentro del bloque se declare una nueva variable con el mismo nombre, pero esto no tiene sentido porque si se declara una nueva variable, se borrará el valor de la anterior, entonces no entiendo, ¿qué sentido tiene utilizar y almacenar dos variables diferentes (local y global), pero con el mismo valor?
Gracias, pero ya había leído el primer enlace, y el segundo confirmó la lógica que utilicé al escribir el código.
Sin embargo, me confunde esta afirmación del segundo enlace "...fuera de este bucle hay otra variable con el mismo nombre... " Pero esto no tiene sentido porque si declaras una nueva variable, el valor de la anterior se borrará, entonces no entiendo, ¿qué sentido tiene usar y almacenar dos variables diferentes (local y global), pero con el mismo valor?
En mi opinión, estás escribiendo tonterías. Si declaras una variable local dentro de un bucle o función, el valor de una variable global con el mismo nombre no se verá afectado, pero el compilador te advertirá de que has declarado una variable local con el mismo nombre que la variable global existente y trabajar dentro de una función o bloque de código cuyo ámbito incluya la variable recién declarada no afectará al valor de la variable global. Te advierte de ello para que entiendas que se trata de una nueva variable, y para que no esperes que el valor de la variable global cambie después de salir del ámbito del bloque en el que declaraste una nueva variable con el mismo nombre que la variable global existente.
En términos sencillos: todo lo que está dentro del piso se aplica a todas las habitaciones y es compartido por todas ellas (variable global). Y todo lo que está dentro de una habitación - sólo se aplica a la habitación y no es visible desde otras habitaciones (es una variable local).
¿Aún más sencillo? Por favor:
Si se estropea el aire en el baño (localmente), ahí se estropea. Mientras tanto, todo el piso (globalmente) sabe (a raíz de tus experimentos con el retrete) que es mejor no entrar en el retrete... Pero el aire es un concepto para todo el piso, y todos los residentes saben del aire viciado en el baño. Al mismo tiempo, sólo la persona afortunada que se encuentra en el retrete puede experimentar plenamente todas las delicias del cambio del entorno local dentro del espacio confinado (influencia local del valor de la variable). Los demás lo sabemos, pero no lo sentimos. Al salir del retrete, se pierden las sensaciones (valores locales) que se experimentaban en el retrete y se empieza a respirar aire fresco (se obtienen los valores globales del aire), sabiendo al mismo tiempo, como todo el mundo, que hay una patada en los pantalones (resultado de la función de contaminación del aire, que afecta a la vida global de todo el piso)...
Espero haber sido claro
Creo que estás escribiendo tonterías. Si declaras una variable local dentro de un bucle o función, el valor de la variable global con el mismo nombre no se sobrescribirá, pero el compilador te advertirá de que has declarado una variable local con el mismo nombre que la variable global existente, y trabajar dentro de una función o bloque de código cuyo ámbito incluya la variable recién declarada no afectará al valor de la variable global. Te advierte de ello para que entiendas que se trata de una nueva variable, y para que no esperes que el valor de la variable global cambie después de salir del ámbito del bloque en el que declaraste una nueva variable con el mismo nombre que la variable global existente.
En términos sencillos: todo lo que está dentro del piso se aplica a todas las habitaciones y es compartido por todas ellas (variable global). Y todo lo que está dentro de una habitación - sólo se aplica a la habitación y no es visible desde otras habitaciones (es una variable local).
¿Aún más sencillo? Por favor:
Si se estropea el aire en el baño (localmente), ahí se estropea. Mientras tanto, todo el piso (globalmente) sabe (resultado de tus experimentos con el retrete) que es mejor no entrar en el retrete... Pero el aire es un concepto para todo el piso, y todos los ocupantes saben del aire viciado en el baño. Al mismo tiempo, sólo la persona afortunada que se encuentra en el retrete puede experimentar plenamente todas las delicias del cambio del entorno local dentro del espacio confinado (influencia local del valor de la variable). Los demás lo sabemos, pero no lo sentimos. Al salir del retrete, se pierden las sensaciones (valores locales) que se experimentaban en el retrete y se empieza a respirar aire fresco (se obtienen los valores globales del aire), sabiendo al mismo tiempo, como todo el mundo, que hay una patada en los pantalones (resultado de la función de contaminación del aire, que afecta a la vida global de todo el piso)...
Espero haber sido claro
Descubrí la verdad en su obra - ¡gracias! Resulta que al declarar una variable dentro de un bloque con el mismo nombre que la variable global se bloquean los datos de la variable global dentro del bloque... y la advertencia sobre la variable ya declarada no se puede eliminar, ¿verdad?
Gracias, pero ya he leído el primer enlace, y el segundo confirmó la lógica que utilicé al escribir el código.
Sin embargo, me confunde esta afirmación del segundo enlace "...fuera de este bucle hay otra variable con el mismo nombre... "Pero esta tontería porque si declaras una nueva variable, el valor de la anterior se borrará, entonces no me queda claro, ¿qué sentido tiene usar y almacenar dos variables diferentes (local y global), pero con el mismo valor?
Lamentablemente no está escrito correctamente :(
Por desgracia, está mal escrito allí :(
no lo dice bien en la ayuda.
¿Por qué me das el código? No sé qué buscar en él... ...y estoy limitado por el tiempo. Puedes decirme para qué sirve y cuál es el error en la ayuda.
es el código de la ayuda
es "i" al principio de la función
entonces en el bucle es "i" de nuevo.
es el código de la ayuda
es "i" al principio de la función
entonces en el bucle es "i" de nuevo
Pues no hay error: un bucle con i global (azul), y otro bucle con i local (rojo)