2016-08-25 2 views
1

VBScriptでオブジェクトの配列を操作する方法を学ぶのに役立つ小さなプログラムを書きましたが、意味をなさない結果が出ています。私はそれを印刷するために行くときに、配列全体が最後のオブジェクトエントリでいっぱいになった理由を理解していません。VBScriptでオブジェクトとスコープの配列を理解する

Class TestObj 
    Public id 
End Class 

Dim arr() 
Set tObj = new TestObj 

Public Function fillArray() 
    ReDim arr(10) 

    For i = 0 To 9 Step 1 
     Call createObj() 
     Set arr(i) = tObj 
    Next 

    'Print the array in this function 
    Print ("Printing from fillArray function") 
    For i = 0 To 9 Step 1 
     Print ("arr("&i&"):"& arr(i).id) 
    Next 

    Call printArray() 
End Function 

Public Function createObj() 
    max = 100 
    min = 1 
    Randomize 
    randInt = (int((max-min+1)*Rnd+min)) 
    Print ("Random Integer is: " &randInt) 
    tObj.id = randInt 
End Function 


Public Function printArray() 
    size = UBound(arr) 
    Print ("Printing from printArray function") 

    For i = 0 To size-1 Step 1 
     Print ("arr("&i&"):"& arr(i).id) 
    Next 
End Function 


Call fillArray() 

次のように出力されます

Random Integer is: 80 
Random Integer is: 92 
Random Integer is: 70 
Random Integer is: 10 
Random Integer is: 18 
Random Integer is: 100 
Random Integer is: 27 
Random Integer is: 47 
Random Integer is: 34 
Random Integer is: 60 
Printing from fillArray function 
arr(0):60 
arr(1):60 
arr(2):60 
arr(3):60 
arr(4):60 
arr(5):60 
arr(6):60 
arr(7):60 
arr(8):60 
arr(9):60 
Printing from printArray function 
arr(0):60 
arr(1):60 
arr(2):60 
arr(3):60 
arr(4):60 
arr(5):60 
arr(6):60 
arr(7):60 
arr(8):60 
arr(9):60 

私たちが見ることができるように、最後のオブジェクトは、60と配列のすべてのインデックスは、今、そのオブジェクトが含まれているか、いくつかのIDを使用して作成されました。

答えて

5

ID番号を連続して取得するtObjが1つだけあります。印刷を開始すると、このtObjは最後のIDを保持します。あなたがしたい場合

その後、

Option Explicit 

Class cX 
    Public mnId 
    Public Function ctor(nId) 
    Set ctor = Me 
    ctor.mnId = nId 
    End Function 
End Class 

Sub printArrayofX(a) 
    Dim i 
    For i = 0 To UBound(a) 
     Wscript.Echo a(i).mnId 
    Next 
End Sub 

ReDim a(3) 
Dim i 
For i = 0 To UBound(a) 
    Set a(i) = New cX.ctor(i) 
Next 

printArrayofX a 

を見て(グローバル、コール、薄暗いX()、またはMIS配列サイズ/ UBound関数の/ない、理解のような残虐行為なし)オブジェクトの配列(約を学びます)出力:

cscript 39151577-2.vbs 
0 
1 
2 
3 
関連する問題