Можно ли иметь массив внутри объекта Dictionary
Я знал, что объединение с подобными структурами данных не будет логичным, но было бы любопытно узнать, можем ли мы иметь элемент массива внутри объекта Dictionary. что-то вроде:
Set d = CreateObject("Scripting.Dictionary")
d.Add "Name", "John"
d.Add "Age", 31
d.Add "Company", Array("microsoft", "apple")
1 ответ
Ты один WScript.Echo
от решения вопроса для себя:
>> Set d = CreateObject("Scripting.Dictionary")
>> d.Add "Company", Array("microsoft", "apple")
>> WScript.Echo Join(d("Company"))
>>
microsoft apple
ср этот вопрос
Обновление (спасибо @Ansgar):
Элементы доставлены .Item()
(а также For Each
) являются копиями; и копии заданий Array тоже (не использует ссылки, как на других языках). Таким образом, изменение элемента массива, хранящегося в словаре, означает присвоение нового массива:
>> 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 или пользовательский объект (все объекты являются ссылками, поэтому присваивание дает доступ к исходному элементу).