Página 1 de 1

cual es la diferencia

Publicado: 31 Ene 2010, 21:20
por xapu
se que local es para usarla solo dentro de la funcion y global en toda la script, pero dim?
alguien me podria decir alguna diferencia mas entre dim, global, local etc... ? eske nunca me a kedado claro del todo

Re: cual es la diferencia

Publicado: 04 Feb 2010, 07:15
por Nahuel
Si alguna vez programaste en algún otro lenguaje (C, por ejemplo) lo sabrías sin dudas :P

Autoit tiene una forma muy... particular de tratar las variables. Es decir, uno no necesita especificar qué tipo de variable está declarando (es más, ni siquiera necesita uno declararla! Basta con iniciarla en un valor) sino que ésta es "declarada" de acuerdo al tipo de valor que se le asigna y el lugar del código en que fue asignada.

En fin, si declarás la variable de forma Global significa que dicha variable puede ser usada y modificada en cualquier parte del código. Como vos dijiste, usando Local, la variable sólo se podrá usar dentro de la función en la que fue declarada. Una vez que la función termina, la variable se "destruye". Pero no es necesario que especifiques esto, AutoIt lo hace por defecto. Es decir, si declarás una variable (sin especificar global, local, etc dentro de una función ésta se crea con el scope local por defecto). Estas palabras sirven, básicamente, para poder declarar nuestras variables con anticipación sin necesidad de asignarles un valor inicial y así evitar errores de sintáxis o, si se quiere, para declarar una variable en forma global dentro de una funcuión, por ejemplo (algo poco recomendable tal vez).
Dim es de dimentional, para declarar arreglos, por ejemplo. También está Const, para variables constantes. Si se declara una variable con el scope Const y luego se intenta modificar su contenido, Autoit nos daría error.

En fin, sirven para ayudarnos a mantener el código coherente, prolijo y eficiente :)

Re: cual es la diferencia

Publicado: 04 Feb 2010, 19:41
por gna08
jeje claro.. ReDim en tu cabeza, para pensar en Local, y trabajar en Global. :smt026 :smt026
:smt007

Re: cual es la diferencia

Publicado: 05 Feb 2010, 19:05
por Nahuel
No entiendo :smt017

Re: cual es la diferencia

Publicado: 05 Feb 2010, 21:47
por gna08
Nahuel escribió:No entiendo :smt017
jaja nada.. perdon. es una broma. es k veia el foro muy aburrido :smt022 jaja espero no me reten por esto jaja.
Saludos :smt021

Re: cual es la diferencia

Publicado: 26 Feb 2010, 15:11
por Ximorro
Por especificar:
Dim se usa sólo para matrices, pero con ellas también se puede usar Local o Global, así que Dim está desaconsejado por los propios creadores de AutoIt, supongo que se mantiene por cuestiones de compatibilidad con versiones anteriores.

Eso de que es automático lo de "local" y "global" es cierto, pero puede dar problemas si usas una variable en una función creyendo que es local... y resulta que sin darte cuenta estás usando un nombre que ya se está utilizando en el ámbito global. ¡Entonces estarías usando la global!

Si explícitamente la declaras como Local, usarás la local aunque haya otra global, y no tocas la "de fuera".

Yo siempre uso las inicializaciones Global y Local y la opción MustDeclareVars, así me detecta algunos errores de tipografía que de otra manera se me pasarían por alto.

Eso sí, usar Local fuera de funciones no tiene efecto, siguen siendo globales, no locales al programa principal.