Анонимные ассоциативные массивы VBScript? (как в Javascript)

Те из вас, кто хорошо разбирается в Javascript и PHP, знают, как использовать конструктор Object для ссылки на то, что составляет анонимный ассоциативный массив, подобный этому:

myFunction({
    "param1" : "value1",
    "param2" : "value2"
});

Преимущество заключается в том, что вам не нужно называть каждый параметр вашей целевой функции и можно установить значения по умолчанию. Кто-нибудь знает, как строить операторы аналогичным образом в VBScript? Я изучал класс Dictionary, но не думаю, что у меня будет четкое представление о том, как использовать это в своих интересах, пока я не увижу пример.

Спасибо,


person Dexter    schedule 15.11.2010    source источник


Ответы (2)


Объект Dictionary — это именно то, что вам нужно. Я успешно использовал его для многоязычного скина сайтов. Это не сложно использовать.

см.: http://www.devguru.com/technologies/vbscript/13992.asp

person Diodeus - James MacFarlane    schedule 15.11.2010
comment
Привет спасибо. Я просмотрел объект Dictionary, и единственный способ использовать его в качестве ассоциативного массива — создать именованный объект и добавить мои параметры в качестве значений по одному. Это не совсем то, что я пытался сделать, поскольку я пытался избежать именованной переменной и хотел иметь возможность использовать анонимный массив в качестве аргумента. - person Dexter; 16.11.2010
comment
Не могли бы вы привести простой пример вышеприведенного вызова, перенесенного на VBScript с использованием объекта Dictionary, чтобы я мог увидеть, видим ли мы его одинаково? Спасибо - person Dexter; 16.11.2010

Вы были правы, это было не сложно. Это был просто вопрос творчества с обычным массивом. Вот что я сделал:

<%
    Function Img(aParamArray)
        Dim oImageTag,aImageTagKeys, val, param, key, output
        Set oImageTag = CreateObject("Scripting.Dictionary")

        For Each param In aParamArray
            val = Split(param, "::")
            If Ubound(val) = 1 Then
                oImageTag(val(0)) = val(1)
            End If
        Next

        aImageTagKeys = oImageTag.Keys
        Img = "<img "
        For Each key in aImageTagKeys
            If oImageTag(key) <> "" Then
                Img = Img & key & "=""" & oImageTag(key) & """ "
            End If
        Next

        If iDocType = 0 Or iDocType = 1 Or iDocType = 6 Then
            Img = Img & ">"
        Else
            Img = Img & "/>"
        End If
    End Function
%>

--ИЛИ я могу установить значения по умолчанию и выводить только поддерживаемые атрибуты--

<%
Function Img(aParamArray)
    Dim oImageTag,aImageTagKeys, val, param, key, output
    Set oImageTag = CreateObject("Scripting.Dictionary")
    oImageTag("src") = ""
    oImageTag("alt") = ""
    oImageTag("class") = ""
    oImageTag("id") = ""
    oImageTag("width") = ""
    oImageTag("height") = ""
    oImageTag("usemap") = ""
    oImageTag("title") = ""
    oImageTag("style") = ""
    oImageTag("dir") = ""
    oImageTag("lang") = ""
    oImageTag("ismap") = ""
    oImageTag("onabort") = ""
    oImageTag("onclick") = ""
    oImageTag("ondblclick") = ""
    oImageTag("onmousedown") = ""
    oImageTag("onmouseout") = ""
    oImageTag("onmouseover") = ""
    oImageTag("onmouseup") = ""
    oImageTag("onkeydown") = ""
    oImageTag("onkeypress") = ""
    oImageTag("onkeyup") = ""

    For Each param In aParamArray
        val = Split(param, "::")
        If Ubound(val) = 1 Then
            If oImageTag.Exists(val(0)) Then
                oImageTag(val(0)) = val(1)
            End If
        End If
    Next

    aImageTagKeys = oImageTag.Keys
    Img = "<img "
    For Each key in aImageTagKeys
        If oImageTag(key) <> "" Then
            Img = Img & key & "=""" & oImageTag(key) & """ "
        End If
    Next

    If iDocType = 0 Or iDocType = 1 Or iDocType = 6 Then
        Img = Img & ">"
    Else
        Img = Img & "/>"
    End If
End Function
%>

И назовите это так:

<% =Img(Array(_
                "src::http://www.domain.com/img.jpg",_
                "alt::Some alt text",_
                "width::30",_
                "height::30",_
                "class::noborder"_
)) %>

Теперь я могу легко управлять выводом тегов изображения независимо от типа документа, а вывод изображения с SQL-сервера станет намного проще, поскольку теперь я могу сделать псевдоассоциативный массив из нормально индексированного массива.

Суть в том, чтобы понять это не для создания тегов изображений, а для создания полных представлений данных и форм на основе нескольких факторов и данных с SQL-сервера, но мне нужно было упростить это, чтобы понять это. Теперь он работает отлично.

Спасибо за ваше предложение!

person Dexter    schedule 16.11.2010