Objekt Dictionary v ASP

    0

    Asi každý, kdo někdy pracoval s PHP, u ASP občas postrádá nějakou funkci či vlastnost, která je v PHP, ale v ASP nikoli. Mě například chyběla možnost používat jako index pole místo číselné řady libovolné číslo či dokonce řetězec – ovšem do doby, dokud jsem neobjevil objekt Dictionary.

    Objekt Dictionary nám pomůže všude tam, kde potřebujeme pracovat s polem, ale nevyhovuje nám jako index souvislá číselná řada počínající nulou. U tohoto objektu můžeme jako indexy použít libovolné textové řetězce. Pojem index asi nebude zcela přesný, s objektem nepracujeme vlastně jako s polem, ale jako s kolekcí jako například se session nebo application proměnnými.

    Objekt musíme nejprve vytvořit:

    Set Jmena = CreateObject(„Scripting.Dictionary“)

    Jednotlivé prvky kolekce vytvoříme metodou object.add nazev_prvku, hodnota_prvku. Například:

    Jmena.add „Jiri“, 331649
    Jmena.add „Josef „, 308987
    Jmena.add „Jan“, 294517
    Jmena.add „Petr“, 265875
    Jmena.add „Jaroslav“, 230915

    K jednotlivým prvkům kolekce přistupujeme přes vlastnost objekt.Item(nazev_prvku):

    Response.write Jmena.Item („Jan“)
    Jmena.Item(„Petr“) = 230914
    Jmena.Item(„Jiri“) = Jmena.Item(„Jiri“) + 1

    Celou kolekci samozřejmě můžeme procházet pomocí cyklu for-each:

    For Each k in Jmena
        response.write k & „-“ & Jmena.Item(k) & „<BR>“ & vbCrLf
    next

    Existenci prvku daného jména zjistíme metodou object.exists(jmeno_prvku):

    if Jmena.Exists („Jan“) then response.write Jmena.Item („Jan“) & „<BR>“ & vbCrLf

    Na místě názvu prvku samozřejmě může být proměnná, takže můžeme například napsat následující kód:

    Jmeno = „Karel“
    if Jmena.Exists(Jmeno) then
       response.write Jmena.Item(Jmeno) & „<BR>“ & vbCrLf
    else
       Jmena.Add Jmeno, 0
    end if

    Počet prvků zjistíme pomocí vlastnosti object.count:

    PocetJmen = Jmena.count

    Celou kolekci můžeme převést na pole. Můžeme získat pole se seznam názvů jednotlivých prvků kolekce metodou object.keys nebo pole jejich hodnot metodou object.Items:

    a = Jmena.Keys
    For n = 0 to PocetJmen-1
        response.write a(n) & „<BR>“ & vbCrLf
    next
    b = Jmena.Items
    For n = 0 to PocetJmen-1
        response.write b(n) & „<BR>“ & vbCrLf
    next

    Jednotlivé prvky kolekce můžeme samozřejmě i odstranit, a to buď jednotlivě metodou object.remove(jmeno_prvku)nebo všechny najednou metodou object.RemoveAll:

    Jmena.Remove („Jan“) Jmena.RemoveAll

    Poslední vlastností objektu Dictionary je vlastnost object.CompareMode, která může nabývat hodnot
    0 = binární porovnávání, tj. Jmena.Item(„jan“) a Jmena.Item(„JAN“) jsou různé prvky
    1 = textové porovnávání, tj. Jmena.Item(„jan“) a Jmena.Item(„JAN“) je tentýž prvek (tato hodnota je implicitní)

    Uznávám, že práce s tímto objektem není zdaleka tak jednoduchá a pohodlná, jako práce se jmennými indexy v PHP, ale svůj účel splní a když nic lepšího nemáme…

    Starší komentáře ke článku

    Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

    Žádný příspěvek v diskuzi

    Odpovědět