Динамические массивы в VBScript с помощью Split ().Есть ли способ лучше? - PullRequest
3 голосов
/ 11 августа 2010

Многие сценарии, которые я пишу на работе, зависят от создания динамически изменяемых массивов. Массивы в VBScript делают это довольно трудной задачей, так как приходится Redim массивы каждый раз, когда вы хотите изменить их размер. Чтобы обойти это, я начал создавать строки, разделенные запятыми, и использовать Split(...) для создания из них одномерных массивов. Хотя это работает для меня просто фантастически, мне стало интересно, есть ли в VBScript более эффективный способ справиться с этим. Поэтому я спрашиваю StackOverflow; есть ли?

Отказ от ответственности : я полностью осознаю, что VBScript - довольно нестандартный язык сценариев, но для Python требуется дополнительное программное обеспечение, что немного затрудняет автоматизацию сервера, а PowerShell не является основным компонентом еще. Я учу их обоих, хотя!

Ответы [ 2 ]

6 голосов
/ 19 августа 2010

Решение, к которому я обычно обращаюсь, заключается в изменении размера массива каждый раз, когда я добавляю в него новый элемент. Таким образом, в конечном массиве никогда не будет неиспользуемых записей.

ReDim aArray(-1)

For i = 1 To 10
    ReDim Preserve aArray(UBound(aArray) + 1)
    aArray(UBound(aArray)) = i
Next

MsgBox Join(aArray, "," & vbNewLine)

Другое решение, предложенное Карлосом, состоит в том, чтобы сделать это, используя объект Dictionary, который, вероятно, является более чистым решением:

Set dic = CreateObject("Scripting.Dictionary")

dic.Add "Item1", ""
dic.Add "Item2", ""
dic.Add "Item3", ""

msgbox Join(dic.Keys, "," & vbNewLine)

Спасибо, Maciej

1 голос
/ 11 августа 2010

Как насчет словаря объекта?

...