2010-11-15 7 views
0

Ceux d'entre vous compétent en Javascript et PHP savent comment utiliser le constructeur d'objets pour faire référence essentiellement ce qui équivaut à un tableau associatif anonyme comme ceci:VBScript Tableaux associatifs anonymes? (Comme en Javascript)

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

L'avantage est de ne pas avoir à nommer chaque paramètre de votre fonction cible et être en mesure de définir les paramètres par défaut. Est-ce que quelqu'un sait comment construire des instructions de manière similaire dans VBScript? Je regardais dans la classe du dictionnaire, mais je ne pense pas que je vais avoir une compréhension ferme sur la façon d'utiliser cela à mon avantage ici jusqu'à ce que je vois un exemple.

Merci,

Répondre

3

L'objet Dictionnaire est exactement ce que vous cherchez. Je l'ai utilisé avec succès pour l'habillage de plusieurs langues de sites. Ce n'est pas difficile à utiliser.

voir: http://www.devguru.com/technologies/vbscript/13992.asp

+0

Salut merci. J'ai regardé sur l'objet Dictionary et la seule façon que je peux voir pour l'utiliser comme un tableau associatif est de créer un objet nommé et d'ajouter mes paramètres en tant que valeurs une à la fois. Ce n'est pas tout à fait ce que j'essayais de faire, car j'essayais d'éviter une variable nommée, et je voulais être capable de mettre un tableau anonyme en argument. – Dexter

+0

Pourriez-vous me donner un exemple simple de l'appel ci-dessus porté à VBScript en utilisant l'objet Dictionary afin que je puisse voir si nous le voyons de la même manière? Merci – Dexter

1

Vous aviez raison, il n'a pas été difficile à utiliser. C'était juste une question de créativité avec un tableau normal. Voici ce que je l'ai fait:

<% 
    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 
%> 

-OR je peux mettre les valeurs par défaut et sortie uniquement pris en charge attributes--

<% 
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 
%> 

Et l'appeler comme ceci:

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

Maintenant, je peux contrôler facilement la sortie des tags d'image quel que soit le doctype, et sortir une image à partir d'un serveur SQL sera beaucoup plus facile maintenant que je peux faire un tableau pseudo-associatif sur un tableau normalement indexé. Le but de comprendre cela n'était pas de créer des tags d'image, mais de créer des vues entières de données et de formulaires en fonction de plusieurs facteurs et données d'un serveur SQL, mais j'avais besoin de le simplifier pour le comprendre. . Maintenant, ça fonctionne parfaitement.

Merci pour votre suggestion!

Questions connexes