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 件のコメント:
コメントを投稿