2009-02-10 2 views
7

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

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

Для каждого квартала д q.Do некоторые работы

Etc.

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

+2

Возможно, вы захотите подождать немного (> 5 минут) до того, как пометить вопрос, как ответили, чтобы больше людей делали предложения ... ;-) – Dscoduc

+2

Почему? На этот вопрос был дан ответ (я всегда могу отметить его как таковой). – user45492

ответ

10

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

2

Простой ответ: нет. Массив не может быть сделан const.

6

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

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

For Each Quarter in arrQuarters 
    wscript.echo Quarter 
Next 
3

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

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 
+0

Вот ХОРОШИЙ ответ. Хотя вы не можете объявить постоянный массив, существует обходное решение: определите его как функцию. – Stephan

1

Чем короче и менее подверженным ошибкам решение будет:

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" 

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

Смежные вопросы