Встроенное изменение размера вложенного массива

Я хочу ReDim вложенный массив (НЕ двухмерный массив, см. пример).
Я запускаю его с файлом 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.


person brazoayeye    schedule 05.10.2016    source источник


Ответы (1)


ReDim можно использовать только для переменной. Вы можете сделать следующее:

Dim temp
temp = myArr(2)
ReDim temp(3)
myArr(2) = temp

(Но - я не уверен, почему вы хотите встроить это, а не просто использовать reDimmer.)

person John Coleman    schedule 05.10.2016
comment
Я бы предпочел сделать это встроенным, потому что это позволяет избежать строк кода, которые делают файл менее читаемым. Встроенный синтаксис также более гибкий, я должен выполнять две разные функции для версии Preserve. - person brazoayeye; 07.10.2016