任务: 维护一组人员。
在溶液首先尝试: 使用带有数值指标=键,基于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)吗? –