#arrays #multidimensional-array #vbscript
#массивы #многомерный массив #vbscript
Вопрос:
Я хочу ReDim
вложенный массив (НЕ 2d-массив, см. Пример).
Я запускаю его с помощью файла VBS в Windows 10.
'1 standard redim
myArr = Array()
Redim myArr(11)
msgBox(UBound(myArr)) 'show 11
'2 nested this way works
myArr(0) = Array("a", "b", "c")
msgBox(UBound(myArr(0))) 'show 2
'3 ERROR, NOT corresponding type
' myArr(1)(4)
myArr(2) = Array()
msgBox(UBound(myArr(2))) 'show -1
'4 compiling error
reDim myArr(2)(3)
У меня есть решение, которое не является встроенным, но использует вспомогательную функцию:
res = reDimmer(myArr(2), 4)
msgBox(UBound(myArr(2))) 'show 4
function reDimmer(arr, num)
reDim arr(num)
end function
Я не могу понять, допускаю ли я синтаксическую ошибку или есть ограничение в VBScript.
Ответ №1:
ReDim
может использоваться только для переменной. Вы могли бы сделать следующее:
Dim temp
temp = myArr(2)
ReDim temp(3)
myArr(2) = temp
(Но — я не уверен, почему вы хотели бы встроить это, а не просто использовать reDimmer
.)
Комментарии:
1. Я бы предпочел сделать это встроенным, потому что это позволяет избежать строк кода, которые делают файл менее читаемым. Встроенный синтаксис также более гибкий, я должен выполнять две разные функции для сохраняемой версии.