작업 : 명부 유지. 솔루션에서
첫 번째 시도 : 이 sanwar으로 dic.Count
에 따라 숫자 인덱스의 = 키와 사전을 사용은 사전에 저장 키 - 값 쌍을 지적했다. 사전에 명을 추가하려면 (사람 정보) 사람/인스턴스를 만들어 여러 정보 요소를 저장할 수있는 사람 클래스가 필요합니다. 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, 이름, 생년월일을 가진, 그리고 급여. 이름 함수, doc 함수, 임금 함수에 적합한 값 을 전달하여 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 속성은 첫 번째 요소 (우리가 필요로하는 모든 정보를 보유하고있는 사람 객체)를 사전에 추가하여 빈 사전의 .Count 속성이 0이됩니다. 당신은 쉽게 .Add .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
.Count에 따라 숫자 인덱스와 사전이 해결책없는 이유
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
보여줍니다 출력을 작업 : 인원의 유지 관리.
[Dictionary 개체에 대한 설명서] (http://msdn.microsoft.com/en-us/library/x4k5wbx4%28v=VS.85%29.aspx)를 보았습니까? –