VBScript: 配列の要素数を取得する
ある配列が与えられたとき、その要素数(>= 0)を調べるにはどのようにしたらよいのだろうか?
UBound() 関数は、要素数が 0 の配列に対して使用すると、インデックスエラーとなってしまう。
その一つの解が For Each .. In .. ステートメントである。
Function GetArraySize(ByVal arr)
Dim i
For Each i In arr
GetArraySize = UBound(arr) + 1
Exit Function
Next
GetArraySize = 0
End Function
配列の要素数が 1 以上であれば、For Each .. ブロックの内部に進み、UBound() の結果 + 1 が返される。
配列の要素数が 0 ならば、For Each .. はスキップされ、0 が返される。
これを応用すれば、要素数を保持しなくても、配列の末尾に要素を追加する処理を行える。
Dim x()
AppendToArray x, 123
AppendToArray x, 456
AppendToArray x, 789
WScript.Echo x(0), x(1), x(2) ' 123 456 789
Function AppendToArray(ByRef arr, ByVal value)
Dim i, size: size = 0
For Each i In arr
size = UBound(arr) + 1
Exit For
Next
ReDim Preserve arr(size)
arr(size) = value
End Function
例外を捕捉するよりは、スマートではないだろうか。
0 件のコメント:
コメントを投稿