Можете ли вы объявить константный массив в VBScript? - PullRequest
7 голосов
/ 10 февраля 2009

Я хочу использовать массив, который я объявляю один раз в верхней части моего кода несколько раз. Ex.

Const Quarters = ["Q1", "Q2", "Q3", "Q4"]

За каждый квартал q Q. Сделайте некоторую работу

1007 * Etc. *

Можно ли это сделать в VBScript?

Ответы [ 5 ]

10 голосов
/ 10 февраля 2009

Массив является результатом вызова функции (Array()) в VBScript. Только буквальные значения могут быть сделаны Const. Итак: нет, вы не можете.

6 голосов
/ 10 февраля 2009

Почему бы просто не объявить массив как открытый, а затем назначить массив во время запуска скрипта?

Public myArray(3) 
arrQuarters = Array("Q1", "Q2", "Q3", "Q4")

For Each Quarter in arrQuarters
    wscript.echo Quarter
Next
4 голосов
/ 03 ноября 2011

Вы можете определить функцию для возврата массива, который вы хотите использовать в качестве константы. Например:

For Each q in AllQuarters
    wscript.echo q
Next

wscript.echo "element 0 = " & AllQuarters()(0)

AllQuarters()(0) = "X1"

wscript.echo "element 0 still = " & AllQuarters()(0)


Function AllQuarters()
    AllQuarters = Array("Q1","Q2","Q3","Q4")
End Function
2 голосов
/ 10 февраля 2009

Простой ответ: нет. Массив нельзя сделать const.

1 голос
/ 08 декабря 2015

Более короткое и менее подверженное ошибкам решение будет:

Dim arr
arr = Split("Q1 Q2 Q3 Q4") : ubd = UBound(arr)
' Implied separator is " " aka 040 octal aka 32 Dec aka 020 Hex.

Если ваши данные могут содержать пробелы:

arr = Split("Le Sage,ne pleure,ni les vivants, ni les morts", ",")
ubd = UBound(arr)
' arr(2), for instance, now contains "ni les vivants"

Предупреждение. Никогда не выбирайте разделитель, который может встречаться в ваших «атомарных» строках данных, иначе функция разделится на этот разделитель в середине одного фрагмента данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...