任務: 維護一組人員。
在溶液首先嚐試: 使用帶有數值指標=鍵,基於dic.Count
作爲sanwar字典指出的那樣,一個字典中存儲的鍵 - 值對。爲了在字典中放置(信息) 人,我們需要一個人類,我們可以從中創建人物 對象/實例來保存多個信息元素。對於一個Person類
最小/ POC代碼:
Dim g_nPersonId : g_nPersonId = -1
Class cPerson
Private m_nId
Private m_sName
Private m_dtBirth
Private m_dWage
Public Function init(sName, dtBirth, dWage)
Set init = Me
g_nPersonId = g_nPersonId + 1
m_nId = g_nPersonId
Name = sName
Birth = dtBirth
Wage = dWage
End Function
Public Property Let Name( sName ) : m_sName = sName : End Property
Public Property Let Birth(dtBirth) : m_dtBirth = dtBirth : End Property
Public Property Let Wage( dWage ) : m_dWage = dWage : End Property
Public Property Get Id() : Id = m_nId : End Property
Public Property Get Name() : Name = m_sName : End Property
Public Property Get Birth() : m_dtBirth = m_dtBirth : End Property
Public Property Get Wage() : m_dWage = m_dWage : End Property
Public Function Data()
Data = Array(m_nId, m_sName, m_dtBirth, m_dWage)
End Function
End Class ' cPerson
[類cPerson定義/藍圖者,每一個都具有一個ID,名稱,出生日期,和 工資。您可以通過調用init函數來創建人員,名稱,文檔和工資成員均可通過合適的值 ;該id將自動增加(通過使用全局 計數器,而不是在更多功能的OO語言中使用適當的類級別數據)。]
和演示腳本來證明我們可以創建和顯示人數:
Dim oAdam : Set oAdam = New cPerson.init("Adam", #1/5/2001#, 1234.56)
Dim oEve : Set oEve = New cPerson.init("Eve" , #1/6/2001#, 6543.21)
Dim oPerson
For Each oPerson In Array(oAdam, oEve)
WScript.Echo Join(oPerson.Data(), " - ")
Next
輸出:
0 - Adam - 1/5/2001 - 1234.56
1 - Eve - 1/6/2001 - 6543.21
現在,讓我們把它們與數字鍵的字典(一個VBScript特殊 功能,其他語言僅包含字符串鍵字典),基於 .Count屬性。空字典的.Count屬性爲0,通過將 第一個元素(一個持有我們需要的所有信息的人物對象)添加到字典 ,其.Count遞增爲1(爲下一個添加做好準備)。您可以輕鬆地看到 說。新增.Count之間+ 1是時間/精力的浪費:
Dim dicPersons : Set dicPersons = CreateObject("Scripting.Dictionary")
Dim aPersons : aPersons = Array(_
Array("Adam", #1/5/2001#, 1234.56) _
, Array("Eve" , #1/6/2001#, 6543.21) _
)
Dim aPerson
For Each aPerson In aPersons
dicPersons.Add dicPersons.Count, New cPerson.init(aPerson(0), aPerson(1), aPerson(2))
Next
Dim nPerson
WScript.Echo "Adam & Eve"
For Each nPerson In dicPersons
WScript.Echo nPerson, ":", Join(dicPersons(nPerson).Data(), " - ")
Next
dicPersons.Remove 0 ' how do we know the key of Adam?
WScript.Echo "Adam zaped"
For Each nPerson In dicPersons
WScript.Echo nPerson, ":", Join(dicPersons(nPerson).Data(), " - ")
Next
WScript.Echo "Trying to add Caine"
On Error Resume Next
dicPersons.Add dicPersons.Count, New cPerson.init("Caine", Date(), 0.33)
WScript.Echo Err.Description
On Error GoTo 0
輸出
Adam & Eve
0 : 0 - Adam - 1/5/2001 - 1234.56
1 : 1 - Eve - 1/6/2001 - 6543.21
Adam zaped
1 : 1 - Eve - 1/6/2001 - 6543.21
Trying to add Caine
This key is already associated with an element of this collection
說明了爲什麼基於.Count中與數字索引字典是無解 任務:維護一個人的集合。
你看過[Dictionary對象的文檔](http://msdn.microsoft.com/en-us/library/x4k5wbx4%28v=VS.85%29.aspx)嗎? –