• Tidak ada hasil yang ditemukan

Declara una variable estática o crea un arreglo estático.

137 Static [Alcance] $variable [ = inicializador ]

Static [Alcance] $arreglo[dimensión 1]...[dimensión n] [ = inicializador ] Parámetros

Alcance Un modificador opcional, Local o Global que indica donde la variable es visible.

$variable El nombre de la variable a declarar estática.

inicializador

El valor que será inicialmente asignado a la variable. El inicializador puede ser una llamada de función que involucre operaciones matemáticas o comparación de cadenas. Este inicializador es solo evaluado la primera vez que la declaración de la variable aparace.

dimensión El número de elementos que indica la dimensión del arreglo, indexado de 0 a n- 1.

Comentarios

La palabra reservada Static puede aparecer en una linea antes del espesificador opcional de alcance , o después. e.j. Local Static o Static Local ambas formas con aceptables.

Si el modificador de alcance Local es usado, entonces la variable statices visible y usable solo en la función en qla cual es declarada. Si el modificador de alcance Global es usado, entonces la variable static es visible y usable en todas las partes de script; en esta forma, una Global Static no tiene muchas difeencias de una variable Global. Si el modificador de alcamce no es usado, entonces la variable static será creada con alcance local; en esta forma, Static es similar

a Dim.

La diferencia entre Local y Static es el tiempo de vida de la variable. Las variables Locales son solamente almacenadas mientras la función es llamada y son visibles solo dentro de la función en la cual es declarada; cuando la función retorna, todas estas variables locales son destruidas.

Las variables estáticas son asimismo visibles solo en la función donde son declaradas, pero continuan existiendo, es decir, reteniendo el último valor asignado, aún después de que la función halla finalizado. Cuando se acceda a variables, el alcance local es chequeado primero y después el alcance global.

La palabra reservada Static ejecuta una función similar a las palabras reservadas Global/Local/Dim.

1. Todas ellas declaran una variable antes de ser usada.

2. Todas ellas crean un arreglo.

Nota: Las variables Static deben ser declaradas usando la palabra reservada Static antes de ser usadas, no tiene importancia como AutoItSetOption("MustDeclareVars") es fijado. Las variables estáticas no pueden ser Const.

Usted puede también declarar múltiples variables estáticas en una sola línea:

Static $a, $b, $c

138 E inicializar las variables:

Static $a = 2, $b = 10, $c = 20

Cuando se inicializa unavariable static, el valor de inicialización es evaluado y asignado solo la primera vez, cuando la variable es creada. En todos los subsecuentes pases, el inicializador es ignorado.

Ver Local para más información acerca del uso de arreglos, el cual tiene la misma funcionalizada como en Local, excepto para:

1. La Reiniciaización de una variable Static no tendrá efecto

2. El reajuste de tamaño de una arreglo Static es similar a un ReDim.

3. Usted no puede cambiar una variable estática en variable local o global ni viceversa.

Si usted desea reajustar un arrglo, siempre use Static, no Redim.

Relativo

Local, UBound, ReDim, AutoItSetOption Ejemplo

; Ejemplos de variables estáticas.

Opt("MustDeclareVars", 1) Func Test1()

Static $STbFirstPass = 1 If $STbFirstPass Then $STbFirstPass = 0

; Ejecutar tareas en el primer tiempo EndIf

; Otras cosas que la función hará EndFunc ;==>Test1

Func Accumulate($State) Static $Values[9]

Local $I

If IsNumber($State) Then Switch $State

Case -1 ; Reseteo For $I = 0 To 8

139 $Values[$I] = 0

Next Return True Case -2

Return $Values

Case 0 To UBound($Values) - 1 $Values[$State] += 1

Return $Values[$State]

Case Else

If $State < 0 Then SetError(1, 0) Return False Else

Static $Values[$State + 1] ; Reajuste del arreglo para acomodar los nuevos valores.

$Values[$State] = 1 Return 1

EndIf EndSwitch Else

SetError(2, 0) EndIf

EndFunc ;==>Accumulate Global $I

Test1()

For $I = 1 To 99

Accumulate(Random(0, 20, 1)) Next

For $I In Accumulate(-2) ConsoleWrite($I & ", ") Next

ConsoleWrite("\n");

Test1()

Aviso: Esta característica es experimental. Puede no funcionar, puede contener errores, ser cambiado o removido sin aviso alguno.

No reporte ningún fallo o recomiende nuevas ideas acerca de esta característica.

USAR BAJO SU PROPIO RIESGO.

Switch...Case...EndSwitch

140 Declaración condicional.

Switch <expresión>

Case <valor> [a <valor>] [,<valor> [a <valor>] ...]

declaración1 ...

[Case <valor> [a <valor>] [,<valor> [a <valor>] ...]

declaración2 ...]

[Case Else declaraciónN ...]

EndSwitch

Parámetros

<expresión>

Una expresión que devuelve un valor. Este valor es entonces comparado con los valores de cada case hasta que se encuentre una coincidencia. Esta expresión es evaluada exactamente una vez dentro de la estructura.

<valor>

a<valor> el case es ejecutado si la expresión esta entre los dos valores.

<valor> El case es ejecutado si la expresión coincide con el valor.

Comentarios

Si ningún de los casos coincide con el valor que sigue a Switch, entonces la sección Case Else, si esta presente, es ejecutado. Si no coincide ningún cases y la sección Case Else no esta definida, entonces ningún código dentro de la estructura Switch, aparte de la condición, será ejecutado.

Las declaraciones Switch pueden ser anidadas.

Relativo

If...Then, If...Else...EndIf, Select...EndSelect, ContinueCase Ejemplo

Switch @HOUR Case 6 To 11

$msg = "Buenas Días"

Case 12 To 17

$msg = "Buenas Tardes"

Case 18 To 21

$msg = "Buenas Noches"

Case Else

141 $msg = "¿Qué usted esta haciendo arriba?"

EndSwitch

MsgBox(0, Default, $msg)

With...EndWith

Usado para reducir referencias largas a variables de tipo objeto.

With <expresión>

declaración ...

EndWith

Parámetros

expresión Debe ser una expresión de tipo objeto.

Comentarios

Las declaraciones With...EndWith NO pueden ser anidadas.

Relativo For...In...Next Ejemplo

$oExcel = ObjCreate("Excel.Application")

$oExcel.visible =1

$oExcel.workbooks.add With $oExcel.activesheet .cells(2,2).value = 1 .range("A1:B2").clear EndWith

$oExcel.quit

While...WEnd

Ciclo basado en una expresión.

142 While <expresión>

declaración ...

WEnd

Parámetros

expresión

Si la expresión es verdadera la toda la declaración hasta la declaración WEnd es ejecutado. El ciclo continua indefinidamente mientras la expresión sea

verdadera.

Comentarios

Las declaraciones While...WEnd pueden ser anidadas.

La expresión es testeada antes que el ciclo sea ejecutado de esta manera el ciclo es ejecutado cero o más veces.

Para crear un ciclo infinito, usted puede usar un número diferente de cero en expresión.

Relativo

ContinueLoop, ExitLoop Ejemplo

$i = 0

While $i <= 10

MsgBox(0, "Value de $i es:", $i) $i = $i + 1

WEnd

143

Dokumen terkait