Обект Collection

В колекциите можете да съхранявате елементи от различни типове. Достъпът до всеки елемент може да се осъществява чрез индекса му или чрез незадължителен ключ, свързан с него.

Обектите от тип Collection имат следните методи:

note

Достъпът до елементите в обект от тип Collection може да се осъществява или по индексите им (като в едномерен масив, индексиран от 1), или по свързаните с тях ключове.


tip

Услугата ScriptForge Dictionary разширява обекта Collection с допълнителни функции като извличане и замяна на ключове, както и импортиране/експортиране към обекти от тип Array и низове във формат JSON.


Създаване на колекция

За да създадете обект от тип Collection, използвайте ключовата дума New. Следващият пример създава обект Collection и го попълва с три елемента:


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

Добавяне на елементи

Методът Add служи за добавяне на нови елементи в обекта от тип Collection.

Синтаксис:

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

Параметри:

item: елементът, който да бъде добавен към обекта Collection. Може да бъде от произволен тип.

key: низова стойност, използвана като уникален ключ за идентифициране на този елемент.

before, after: незадължителен аргумент с ключова дума, който указва къде в обекта Collection ще бъде поставен новият елемент. Може да бъде зададен само един от аргументите before или after, за да се определи индексът или ключът, преди който (или след който) да бъде вмъкнат новият елемент.

Пример:

Примерният код по-долу добавя два елемента в обект от тип Collection. Първият е асоцииран с ключ, а вторият не е.


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

Методът Add поддържа и аргументи с ключови думи:


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

Ключовете трябва да бъдат уникални в рамките на обекта Collection. Сравняването на ключове е нечувствително към регистъра. Добавянето на дублирани ключове ще предизвика грешка по време на изпълнение.


Следващият пример илюстрира употребата на аргументите с ключови думи Before и 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

На елементите в обект от тип Collection се присвояват целочислени индексни стойности, които започват от 1 и съответстват на реда на добавяне.


Достъп до елементи

За достъп до даден елемент по индекса или ключа му използвайте метода Item.

oCollection.Item(index)

oCollection.Item(key)

Параметри:

index: целочислена стойност, указваща индекса на елемента, който да бъде върнат.

key: низова стойност, указваща ключа на елемента, който да бъде върнат.

Пример:


    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
  

Премахване на елементи

Методът Remove служи за изтриване на елементи от обект от тип Collection.

Синтаксис:

Елементите могат да се премахват по индекс или по ключ.

oCollection.Remove(index)

oCollection.Remove(key)

Параметри:

index: целочислена стойност, указваща индекса на елемента, който да бъде премахнат.

key: низова стойност, указваща ключа на елемента, който да бъде премахнат.

Пример:


    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
  

Итериране през всички елементи

С оператора For Each ... Next може да се обходят всички елементи в даден обект от тип Collection.


    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
  

Изчистване на колекция

За да премахнете всички елементи от обект Collection, използвайте метода Remove за всеки от елементите, както е показано в следния пример:


    ' Създаване на примерна колекция с два елемента
    Dim myCollection as New Collection
    myCollection.Add(item := 10, key := "A")
    myCollection.Add(item := 11, key := "B")
    MsgBox myCollection.Count ' 2
    ' Премахва всички елементи в колекцията.
    For i = myCollection.Count To 1 Step -1
    	myCollection.Remove(i)
    Next i
    MsgBox myCollection.Count ' 0
  

Моля, подкрепете ни!