(for Internet Explorer)
← ▼ ▲
↑
Remove (ArrayClass)
(src)
Sub ArrayClass::Remove( i as integer, n as string ) as variant
要素を配列から削除して、後の要素を詰めます。
【引数】
i
n
配列の要素の番号。 先頭は 0
削除する要素の数
[ 親: ArrayClass クラス ]
サンプル
Set arr = new_ArrayClass( Array( 0, 1, 2, 3, 4, 5 ) )
arr.Remove 1, 2
Assert IsSameArray( arr.Items, Array( 0, 3, 4, 5 ) )
Remove
→ T_Arr.vbs # T_ArrClass_Remove
テスト
← ▼ ▲
RemoveObject (ArrayClass)
Function ArrayClass::RemoveObject( a_Object as object ) as object
指定したオブジェクトを指している配列の要素１つを、配列から除外します。
【引数】
a_Object
配列から除外するオブジェクト
返り値
除外したとき = a_Object、 無かったとき = Nothing オブジェクト
配列要素がすべてオブジェクトでないとエラーになります。
除外した配列番号には、＋１の配列番号だったオブジェクトが入り、詰められます。
実行前： objs.UBound_=3, objs(0)= a, (1)= b, (2)= c, (3)= d ならば
実行後： objs.UBound_=2, objs(0)= a, (1)= c, (2)= d
objs.RemoveObject b
サンプル：
(src)
テスト
→ [T_AddNewObj]
[ 親: ArrayClass クラス ]
← ▼ ▲
RemoveEmpty (ArrayClass)
(src)
[ 親: ArrayClass クラス ]
Sub ArrayClass::RemoveEmpty()
Empty になっている配列の要素を詰めます。
サンプル
Set arr = new_ArrayClass( Array( 0, Empty, 2, Empty, Empty, 5 ) )
arr.RemoveEmpty
Assert IsSameArray( arr.Items, Array( 0, 2, 5 ) )
テスト
→ T_Arr.vbs # T_ArrClass_RemoveEmpty
← ▼ ▲
ToEmpty (ArrayClass)
Sub ArrayClass::ToEmpty()
配列を空にします。 配列要素数は 0 になります。
(src)
[ 親: ArrayClass クラス ]
← ▼ ▲
LookUpDic (ArrayClass)
Function ArrayClass::LookUpDic( Key as string, Value as variant ) as Dictionary
配列の要素の中から、指定した値を持つ辞書を返します。
サンプル
Set dic1 = CreateObject( "Scripting.Dictionary" )
dic1.Item( "name" ) = "Item1"
Set dic2 = CreateObject( "Scripting.Dictionary" )
dic2.Item( "name" ) = "Item2"
Set arr = new_ArrayClass( Array( dic1, dic2 ) )
Assert arr.LookUpDic( "name", "Item1" ) Is dic1
"name", "Item1"
配列の要素が辞書のときに使えます。
該当する要素が無かったときは、Nothing を返します。
→ T_Dic.vbs # T_LookUpDicInArray
テスト
(src)
[ 親: ArrayClass クラス ]
関連
→ SearchInSimpleArray
← ▼ ▲
ItemFunc (ArrayClass)
Dim ArrayClass::ItemFunc as Function( Items as Array, Name as variant ) as variant
配列の要素を取得する関数。 Item プロパティにアクセスすると呼ばれる関数。
関連
→ Item (ArrayClass)
→ Item デフォルト・プロパティ : 動的定義メンバー (vbsool)
Dim arr : Set arr = new ArrayClass
Set arr.ItemFunc = GetRef( "ClassA_getItem" )
Set obj = arr( "Name" )
Function ClassA_getItem( Items, Name )
Dim s
If IsNumeric( Name ) Then
Set ClassA_getItem = Items( Name )
Else
For Each s In Items
If s.Name = Name Then Set ClassA_getItem = s : Exit Function
Next
End If
End Function
サンプル：
Item デフォルト・プロパティにアクセスするときに、要素を決定する方法をカスタマイズできます。
→ T_Arr_Target # [T_ArrayCustom]
テスト
→ NameOnlyClass
配列番号以外の数値型で要素を識別するとき
[ 親: ArrayClass クラス ]
← ▼ ▲
NewIterator (ArrayClass)
Dim ArrayClass::NewIterator as ArrayClassIterator
ArrayClassIterator
オブジェクトを生成します。
(src)
初めて ArrayClassIterator::GetNext を呼んだときは、先頭の要素を返します。
[ 親: ArrayClass クラス ]
← ▼ ▲
Count (ArrayClass)
Property Get ArrayClass::Count() as integer
配列の要素数を返します。
(src)
Count = 2 なら、LBound( Items ) = 0, UBound( Items ) = 1 です。
Visual Basic 系言語では、要素数のシンボルは Count です。
Java 系言語では、要素数のシンボルは Length です。
[ 親: ArrayClass クラス ]
← ▼ ▲
Length (ArrayClass)
Property Get ArrayClass::Length() as integer
配列の要素数を返します。
(src)
Length = 2 なら、LBound( Items ) = 0, UBound( Items ) = 1 です。
Visual Basic 系言語では、要素数のシンボルは Count です。
Java 系言語では、要素数のシンボルは Length です。
[ 親: ArrayClass クラス ]
← ▼ ▲
UBound_ (ArrayClass)
Property Get ArrayClass::UBound_() as integer
配列の最大要素番号を返します。
(src)
UBound の末尾にアンダースコアが付いています。
（UBound をオーバーライドすると、ArrayClass が実装できなくなるため。）
For i=0 To Arr.UBound_
Next
サンプル：
[ 親: ArrayClass クラス ]
← ▼ ▲
CSV (ArrayClass)
Property Get ArrayClass::CSV() as string
CSV 形式にした配列のすべての要素。
(src)
Dim a : Set a = new ArrayClass
a.Add "abc"
a.Add "def"
echo a.CSV '// "abc,def"
CSV
→ AddCSV (ArrayClass)
関連
[ 親: ArrayClass クラス ]
サンプル
Assert new_ArrayClass( Array( 1, 2, 3 ) ).CSV = "1,2,3"
サンプル
← ▼ ▲
Copy (ArrayClass)
Sub ArrayClass::Copy( SrcArr as array or ArrayClass )
配列のすべての要素をコピーします。
これまで入っていた要素は無くなります。
サンプル：
Dim a
Set a = New ArrayClass
a.Add 1
a.Copy Array( 2, 3 )
'// a は、{ 2, 3 }
Copy
(src)
[ 親: ArrayClass クラス ]
← ▼ ▲
new_ArrayClass
Function new_ArrayClass( InitialValues as array of variant ) as ArrayClass
配列から ArrayClass のオブジェクトを生成します。
【引数】
InitialValues
ArrayClass のオブジェクトの初期値の配列
返り値
ArrayClass のオブジェクト
ファイル：
vbslib.vbs
(src)
サンプル
Assert new_ArrayClass( Array( 1, 2, 3 ) ).CSV = "1,2,3"
サンプル
Set arr = new_ArrayClass( Array( 1, 2, 3 ) )
Assert arr(0) = 1
Assert arr(1) = 2
Assert arr(2) = 3
new_ArrayClass
[ 親: ArrayClass クラス ]
← ▼ ▲
Value (ArrayClass)
Property Get ArrayClass::Value() as string
配列のすべての要素を文字列にします。
古い仕様です。廃止予定です。
Set arr = new ArrayClass
s = GetEchoStr( arr )
次のように代用できます。
[ 親: ArrayClass クラス ]
← ▼ ▲
Echo (ArrayClass)
Sub ArrayClass::Echo()
配列のすべての要素を表示します。
廃止予定です。
Value プロパティを echo 表示してください。
→ echo
(src)
→ Value (ArrayClass)
古い仕様です。廃止予定です。
Set arr = new ArrayClass
echo arr
次のように代用できます。
[ 親: ArrayClass クラス ]
← ▼ ▲
ArrayClassIterator クラス
の要素を順番にたどっていくクラスです。
Dim a : Set a = new ArrayClass
Dim iter : Set iter = a.NewIterator()
While iter.HasNext()
echo iter.GetNext()
WEnd
サンプル
ArrayClass
メンバー
.GetNext
.HasNext
参考
→ イテレーター (JavaScript 1.7)
次の要素を返す。 次回の呼び出しでは、その次の要素を返す。
次の要素があるかどうか
→ NewIterator (ArrayClass)
取得
(src)
.GetNextOrSentinel
次の要素を返す。 次の要素が無いときは、番兵を返す。
テスト
→ T_Arr_Target # [T_ArrIter]
← ▼ ▲
GetNext (ArrayClassIterator)
Function ArrayClassIterator::GetNext() as variant
次の要素を返す。 次回の呼び出しでは、その次の要素を返す。
Java2 の Iterator パターン、JavaScript 1.7 のイテレーターでは、next に相当します。
Next は、VB言語の予約語であることと、Me に副作用があるため、プロパティではなくメソッド
であり、メソッドは動詞で始まる方が読みやすいため、GetNext に変更しています。
→ ArrayClassIterator クラス
補足
次の要素が無いときは、エラーになります。 エラーにしたくないときは、
GetNextOrSentinel
を使ってください。
← ▼ ▲
HasNext (ArrayClassIterator)
Function ArrayClassIterator::HasNext() as boolean
次の要素があるかどうかを返す。
→ ArrayClassIterator クラス
← ▼ ▲
GetNextOrSentinel (ArrayClassIterator)
Dim f, line, a, elem, iter
Set a = new ArrayClass : a.Add new Elem
Set iter = a.NewIterator
Set sentinel = new Elem
Set elem = iter.GetNextOrSentinel( sentinel )
Set f = OpenForRead( path )
Do Until f.AtEndOfStream
line = f.ReadLine()
If elem.IsMatch( line ) Then '// ここで番兵が使われることがある
...
elem = iter.GetNextOrSentinel( sentinel )
'// GetNext ではここでエラーになってしまうことがある
End If
Loop
f = Empty
elem = Empty
iter = Empty
Function ArrayClassIterator::GetNextOrSentinel( Sentinel as variant ) as variant
次の要素を返す。 ただし、次の要素が無いときは、Sentinel 引数（番兵）を返す。
サンプル：
GetNextOrSentinel
GetNextOrSentinel
→ ArrayClassIterator クラス
← ▼ ▲
ArrayDictionary クラス
Dictionary
標準の
の Item を、配列にしたクラスです。
Dim dic
Set dic = new ArrayDictionary
dic.Add "key1", "item11"
dic.Add "key1", "item12"
dic.Add "key1", "item13"
dic.Add "key2", "item21"
dic.Echo
Dim i,j
For Each j in dic.Dic.Items() : For Each i in j.Items
WScript.Echo i
Next : Next
item11
item12
item13
item21
上記スクリプトの出力
サンプル：
Dic
VBScript 標準の Dictionary （プロパティ）
メンバ
Add
キーに要素を登録する。キーは重複可能
ToEmpty
すべての要素を削除します
Echo
すべての要素を表示する
Count
要素の数
１つのキーに対して、複数のアイテムを関連付けするときに使います。
(src)
テスト
→ T_Arr_Target.vbs [T_ArrayDic1]
← ▼ ▲
Dic (ArrayDictionary)
Dim ArrayDictionary::Dic as Dictionary of variant
ArrayDictionary クラスがラップしている辞書です。
要素(Item)は、オブジェクトでもそれ以外でも格納します。
(src)
← ▼ ▲
ToEmpty (ArrayDictionary)
Sub ArrayDictionary::ToEmpty()
辞書に要素を空にします。 要素数は 0 になります。
(src)
← ▼ ▲
Add (ArrayDictionary)
Sub ArrayDictionary::Add( Key as string, Item as variant )
辞書に要素を追加します。
【引数】
Key
要素に関連付けるキー文字列
Item
辞書に追加する要素（オブジェクト、またはそれ以外）
(src)
← ▼ ▲
Count (ArrayDictionary)
Function ArrayDictionary::Count() as integer
辞書の要素数を返します。
【引数】
返り値
辞書の要素数
１つのキーに複数の要素が関連付けされることがあるので、
要素数はキーの数と一致しないことがあります。
(src)
← ▼ ▲
Echo (ArrayDictionary)
Sub ArrayDictionary::Echo()
辞書のすべての要素を表示します。
(src)
← ▼ ▲
配列 （Array）
← ▼ ▲
AddArrElem
Sub AddArrElem( Dst, Src )
配列の要素を追加コピーします。
【引数】
Dst
Arr
コピー先配列。 この配列の末尾に追加
コピー元の要素が入った配列、またはコピー元の単体。
これまで入っていた要素の後に追加します。
→ AddElems (ArrayClass)
(src)
Dst には、Me.Property 形式ではなく、Property 形式にしてください。（下記）
AddArrElem Me.SampleArray, Array( 1,2 )
×：追加されない
AddArrElem SampleArray, Array( 1,2 )
○：追加される
→ 値渡しと参照渡し
Me.
AddArrElem arr1, arr2
AddArrElem arr1, new ClassA
→ T_Arr_Target.vbs [T_Arr1]
関連
テスト
サンプル
← ▼ ▲
CopyArr
Sub CopyArr( Dst, Src )
配列の要素をコピーします。
【引数】
Dst
Arr
コピー先
コピー元
(src)
Arr が配列ではないときは、Dst(0) に Src をコピーします。
Dst に ArrayClass::Items を指定してもコピーした内容は ArrayClass に格納されません。
ArrayClass::Copy を使ってください。
廃止されました。
Dim arr() とすると arr = Array はできませんが、 Dim arr とすると arr = Array ができます。
← ▼ ▲
SearchInSimpleArray
Function SearchInSimpleArray( InData as variant, InArray as array of variant,
OutBaseNumOrArray as array of variant, DefaultOut as variant ) as variant
配列を検索して、別の配列の内容を返します。
【引数】
InData
InArray
配列の要素と比較する値。 数値、文字列など = で判定できるもの
InData を比較する値を要素に持つ配列
エラーコード、正常=0
返り値
InData が InArray に見つからなかったときに出力する値
出力する値を要素に持つ配列。 または、出力の最小数値
DefaultOut
OutBaseNumOrArray
(src)
サンプル：
num = SearchInSimpleArray( "SymbolB", Array( "SymbolA", "SymbolB" ), Array( 1, 2 ), Empty )
'// num = 2
サンプル：
num = SearchInSimpleArray( "SymbolB", Array( "SymbolA", "SymbolB" ), 5, Empty )
'// num = 6
→ LookUpDic (ArrayClass)
関連
← ▼ ▲
IsSameArray
Function IsSameArray( Arr1, Arr2 ) as boolean
配列のすべての要素が等しいか判定します。
各要素は = で判定します。
(src)
← ▼ ▲
ReverseObjectArray
(src)
Sub ReverseObjectArray( InputArray, out_Array )
配列を内容（オブジェクトのみ）を逆順にします。
【引数】
InputArray
out_Array
入力する配列。逆順にする前の内容
（出力） 逆順の配列の内容
配列の要素が、オブジェクト以外が入っていたらり、Empty になっているとエラーになります。
← ▼ ▲
ArrayToNameOnlyClassArray
→ NameOnlyClass
Function ArrayToNameOnlyClassArray( aArray as array of not object );
オブジェクトではない要素を持つ配列を、NameOnlyClass の配列に変換します。
【引数】
aArray
返り値
オブジェクトではない要素を持つ配列
NameOnlyClass の配列
→ QuickSort
→ ShakerSort
関連
ソートできる配列にします。
サンプル：
arr = ArrayToNameOnlyClassArray( Array( "a", "b", "c" ) )
(src)
← ▼ ▲
その他
→ (CSV) ArrayFromCSV, ArrayFromCSV_Int
→ DicToArr
→ Dic_addFromArray
→ DicKeyToArr
→ DicItemToArr
←
↓