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