静的変数の宣言、または静的配列の作成を行います。
Static [Scope] $variable [ = initializer ]
Static [Scope] $array[subscript 1]...[subscript n] [ = initializer ]
パラメータ
Scope | オプションの修飾句。LocalまたはGlobalで変数のスコープを指定します。 |
$variable | 宣言する静的変数の名前 |
initializer | 変数の初期代入値。initializerには数式、文字列操作を含む関数呼び出しを指定できます。 このinitializerはこの変数の最初の宣言時にのみ評価されます。 |
subscript | 配列の各次元に作成する要素数。0からn-1でインデックスされる。 |
注意
Static句はオプションのスコープ指定句の前、または後に書くことができます。例えばLocal Static、Static Localはどちらも問題なく動作します。Static $a, $b, $c
Static $a = 2, $b = 10, $c = 20
関連
Local, UBound, ReDim, AutoItSetOption
Example
; Static変数の例
Opt("MustDeclareVars", 1)
Func Test1()
Static $STbFirstPass = 1
If $STbFirstPass Then
$STbFirstPass = 0
; 最初に通過した際に行うタスク
EndIf
; 関数が行う他の処理
EndFunc ;==>Test1
Func Accumulate($State)
Static $Values[9]
Local $I
If IsNumber($State) Then
Switch $State
Case -1
; リセット
For $I = 0 To 8
$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] ; 新しい値に合わせて配列をサイズ変更
$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()