Objekt Collection

Kolekce lze používat k uchování položek různých typů. Ke každé položce lze přistupovat pomocí jejího indexu nebo pomocí volitelného klíče, který k ní je přiřazen.

Objekt Collection má následující metody:

note

K položkám v kolekci lze přistupovat buď pomocí jejích indexů (jako v jednorozměrném poli číslovaném od 1), nebo pomocí přiřazených klíčů.


tip

Služba ScriptForge Dictionary rozšiřuje objekt Collection o dodatečné funkce jako získávání a nahrazování klíčů nebo import a export do objektů polí a řetězců JSON.


Vytvoření kolekce

Objekt Collection vytvoříte pomocí klíčového slova New. V následujícím příkladu je vytvořen objekt Collection a naplněn třemi položkami:


    Dim myCollection as New Collection
    myCollection.Add("Some text")
    myCollection.Add(100)
    myCollection.Add(Array(1, 2, 3, 4))
    MsgBox myCollection.Count ' 3
  

Přidání položek

K přidávání nových položek do objektu Collection se používá metoda Add.

Syntaxe:

oCollection.Add(item, [key], [before|after])

Parametry:

item: položka, která se má do objektu Collection přidat. Může být jakéhokoliv typu.

key: řetězec použitý jako jedinečný klíč identifikující tuto hodnotu.

before, after: klíčové slovo pro nepovinný argument, který určuje, kam se nová položka v objektu Collection umístí. Zadán může být pouze jediný z argumentů before a after. Argument určuje index nebo klíč, před který (či za který) se nová položka umístí.

Příklad:

V tomto příkladu se do objektu Collection přidají dva prvky. K prvnímu je přiřazen klíč, zatímco ke druhému není.


    Dim myCollection as New Collection
    myCollection.Add(100, "first")
    myCollection.Add(101)
  

Metoda Add podporuje také argumenty s klíčovými slovy:


    myCollection.Add(item := 100, key := "first")
  
warning

Klíče musí být v rámci objektu Collection jedinečné. Při porovnávání klíčů se nerozlišuje velikost písmen. Přidání duplicitního klíče způsobí běhovou chybu.


Následující příklad ukazuje, jak použít pro určení umístění přidávané položky argumenty before a after.


    Dim myCollection as Variant
    myCollection = New Collection
    myCollection.Add(item := 101, key := "first")
    myCollection.Add(item := 103, key := "third")
    myCollection.Add(item := 105, key := "fifth")
    MsgBox myCollection.Item(2) ' 103
    myCollection.Add(item := 102, key := "second", before := "third")
    MsgBox myCollection.Item(2) ' 102
    myCollection.Add(item := 104, key := "fourth", after := 3)
    MsgBox myCollection.Item(4) ' 104
  
note

Položkám v objektu Collection jsou přiřazeny hodnoty celočíselných indexů, které začínají od 1 a odpovídají pořadí, v němž byly položky přidány.


Přístup k položkám

K přístupu k položce podle indexu nebo klíče se používá metoda Item.

oCollection.Item(index)

oCollection.Item(key)

Parametry:

index: celočíselná hodnota určující index položky, která se má vrátit.

key: řetězec určující klíč položky, která se má vrátit.

Příklad:


    Dim myCollection as New Collection
    myCollection.Add(item := 101, key := "A")
    myCollection.Add(item := 102, key := "B")
    myCollection.Add(item := 103, key := "C")
    MsgBox myCollection.Item("A") ' 101
    MsgBox myCollection.Item(3)   ' 103
  

Odstranění položek

K odstranění položek z objektu Collection se používá metoda Remove.

Syntaxe:

Položky lze odstraňovat buď podle indexů, nebo podle klíčů.

oCollection.Remove(index)

oCollection.Remove(key)

Parametry:

index: celočíselná hodnota určující index položky, která se má odstranit.

key: řetězec určující klíč položky, která se má odstranit.

Příklad:


    Dim myCollection as New Collection
    myCollection.Add(item := 101, key := "first")
    myCollection.Add(item := 102, key := "second")
    myCollection.Add(item := 103, key := "third")
    MsgBox myCollection.Count ' 3
    ' Removes the  first value
    myCollection.Remove(1)
    ' Removes the value whose key is "third"
    myCollection.Remove("third")
    MsgBox myCollection.Count ' 1
  

Iterování přes všechny položky

Přes všechny položky v objektu Collection lze iterovat pomocí příkazu For Each ... Next.


    Dim myCollection as New Collection
    myCollection.Add(item := 101, key := "A")
    myCollection.Add(item := 102, key := "B")
    myCollection.Add(item := 103, key := "C")
    For Each value In myCollection
        MsgBox value
    Next value
  

Vymazání kolekce

Chcete-li všechny položky objektu Collection vymazat, zavolejte pro každou z nich metodu Remove, jak ukazuje následující příklad:


    ' Vytvoří ukázkovou kolekci se dvěma položkami
    Dim myCollection as New Collection
    myCollection.Add(item := 10, key := "A")
    myCollection.Add(item := 11, key := "B")
    MsgBox myCollection.Count ' 2
    ' Odstraní z kolekce všechny položky
    For i = myCollection.Count To 1 Step -1
    	myCollection.Remove(i)
    Next i
    MsgBox myCollection.Count ' 0
  

Podpořte nás!