2014-01-09 105 views
1

我在名爲ProcessBook的應用程序中使用VBScript,我正在尋找將一些靜態信息存儲在字典中。清理腳本初始化。字典

我試圖初始化這個字典乾淨,無需調用一個單獨的過程,但沒有任何我嘗試的方法似乎預計。

這裏是我試過到目前爲止:

Dim myDict As New Dictionary(Of String, String) (("key1", "item1"), ("key2", "item2")) 
Dim myDict As Variant 
Set myDict = New Dictionary(("key1", "item1"), ("key2", "item2")) 

而且基本上是一堆猜測涉及形式類似的。

到目前爲止,我已經能夠做的最好的是一樣的東西:

With myDict 
.add "key1", "item1" 
.add "key2", "item2" 
End With 

但這又喊又叫時,它不是一個套路,我想避免的內部。

我相信(類型,類型)從{}語法超出VB 6.5

有誰知道的一些乾淨的方式在VB 6.5初始化的Scripting.Dictionary?

+1

關於對話框可能會報告「VB 6.5」,但它實際上是VBScript和VB.NET從相當 – Plutonix

+0

不同這正是我所做的,感謝您的指正。 –

+1

VBScript不允許'Dim var As Type'語法,這是Office VBA代碼(以前它被Microsoft稱爲VB 6.5) – DarrenMB

回答

1

按6.5估計你的意思是VBA?如果是這樣,則無法在例程之外操作/初始化對象實例。

的唯一方式是一類(cDict)內封裝它並使用constuctor:

Private mDict As Scripting.Dictionary 

Private Sub Class_Initialize() 
    Set mDict = New Scripting.Dictionary 
    With mDict 
     .Add "key1", "item1" 
     .Add "key2", "item2" 
    End With 
End Sub 

Public Property Get Dict() As Scripting.Dictionary 
    Set Dict = mDict 
End Property 

然後客戶端模塊中;

Private Dict As New cDict 

Sub foo() 
    MsgBox Dict.Dict.Item("key1") 
    Dict.Dict.Add "key3", "item3" 
    MsgBox Dict.Dict.Item("key3") 
End Sub 

Of type涉及到VB.Net泛型)

+0

感謝您的回答,這很不幸。 我希望能夠做類似於Collection初始化的東西,如下所示: Dim myCol As Variant myCol = Array(「item1」,「item2」,「item3」) –

1

VBA確實是更多的則面向對象的語言,所以答案是使用存儲過程的程序語言。 怎麼做......

Option Explicit 
Option Compare Text 

Sub test() 
    Dim dic As New Scripting.Dictionary 
    Add dic, Array("Darren", 123, "Alex", 321) 
    MsgBox dic.Count 
End Sub 

Public Sub Add(dic As Dictionary, values As Variant) 
    If Not IsArray(values) Then 
     Err.Raise -1, "Add", "Values must be varient Array" 
    ElseIf UBound(values) Mod 2 = 0 Then 
     Err.Raise -1, "Add", "Even number of values required" 
    End If 
    Dim iQ As Long 
    For iQ = 0 To UBound(values) Step 2 
     dic.Add values(iQ), values(iQ + 1) 
    Next 
End Sub