2013-02-26 271 views
3

我知道組​​合到類似的數據結構不是合乎邏輯的,而是想知道我們是否可以在Dictionary對象中有一個數組元素。一些事情,如:是否有可能在Dictionary對象中有一個數組

Set d = CreateObject("Scripting.Dictionary") 

d.Add "Name", "John" 
d.Add "Age", 31 
d.Add "Company", Array("microsoft", "apple") 

回答

6

你是一個WScript.Echo從解決自己的問題遠:

>> Set d = CreateObject("Scripting.Dictionary") 
>> d.Add "Company", Array("microsoft", "apple") 
>> WScript.Echo Join(d("Company")) 
>> 
microsoft apple 

CF this question

更新(感謝@Ansgar):

.Item()(和For Each)a交付的元素re copies;和數組分配副本(不像其他語言中那樣引用)。因此,改變存儲在字典中的數組元素是指分配一個新的數組:

>> Set d = CreateObject("Scripting.Dictionary") 
>> d.Add "Company", Array("microsoft", "apple") 
>> WScript.Echo Join(d("Company")) 
>> d("Company") = Array(d("Company")(1), "samsung") 
>> WScript.Echo Join(d("Company")) 
>> 
microsoft apple 
apple samsung 

有時,它更方便地使用(另)一個詞典,System.Collections.Arraylist,或者自定義對象(所有的對象都是引用,因此賦值可以訪問原始元素)。

+2

請注意,您不能直接更改嵌套數組的元素('d(「Company」)(1)=「Oracle」'不起作用)。您必須將該數組分配給一個變量,將其更改,然後將其分配回字典條目。 – 2013-02-26 22:15:34

+0

而且,雖然可以將對象分配爲鍵,但不可能將數組分配爲鍵:'a = array(1,2,3):d(a)=「array!」'產生'無效的過程調用或參數錯誤。 (編輯:哦,我只是看到Ekkehard.Horner解釋這個答案是在這個答案的鏈接下)。 – AutomatedChaos 2013-02-27 10:10:39

相關問題