Обсуждение:Ассоциативный массив (KQvr';yuny&Gvvkengmnfudw bgvvnf)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Начиная с Delphi 2009 (вроде бы) можно использовать генерик TDictionary<Key,Value> --Faiwer 07:03, 6 октября 2010 (UTC)
- Да, но это не является конструкцией самого Object Pascal. Ignatus 09:34, 20 декабря 2012 (UTC)
Примеры кода на VBScript(VBA) и VB.NET
[править код]Весь приведённый код протестирован. С вики-разметкой не достаточно знаком, буду благодарен если более опытные редакторы добавят информацию по COM и VB.NET.
VBScript/JScript/VBA для работы с ассоциативным массивом используется COM объект Scripting.Dictionary. Пример на VBScript:
Dim Dic
Set Dic = Createobject("Scripting.Dictionary")
Dic.Add "sbl.spamhaus.org", "SBL Spamhaus"
Dic.Add "xbl.spamhaus.org", "XBL Spamhaus"
Dic.Add "pbl.spamhaus.org", "PBL Spamhaus"
Dim key
For Each key In Dic.Keys 'перебор словаря
wscript.echo Dic(key)
Next
Dim keys, items
keys = Dic.Keys 'получение списка ключей в виде массива
items = Dic.Items 'получение списка значений в виде массива
If Dic.Exists("pbl.spamhaus.org") Then
Dic.Remove("pbl.spamhaus.org") 'удаление пары ключ-значение
End If
Dic.RemoveAll 'удаление всех элементов словаря
В VB.NET для работы с ассоциативным массивом используется класс Hashtable:
Dim Dic As New Hashtable
Dic.Add("sbl.spamhaus.org", "SBL Spamhaus")
Dic.Add("xbl.spamhaus.org", "XBL Spamhaus")
Dic.Add("pbl.spamhaus.org", "PBL Spamhaus")
Dim pair As DictionaryEntry
For Each pair In Dic 'перебор словаря
Debug.Print(pair.Key)
Debug.Print(pair.Value)
Next
Dim keys, items
keys = Dic.Keys 'получение списка ключей в виде массива
items = Dic.Values 'получение списка значений в виде массива
If Dic.ContainsKey("pbl.spamhaus.org") Or Dic.ContainsValue("PBL Spamhaus") Then
Dic.Remove("pbl.spamhaus.org") 'удаление пары ключ-значение
End If
Dic.Clear() 'удаление всех элементов словаря
212.48.34.146 06:45, 9 февраля 2016 (UTC)
Раздел "Примеры"
[править код]"Примером ассоциативного массива является телефонный справочник. Ключом в данном случае является совокупность «Ф. И. О. + адрес», а значением — номер телефона. Один номер телефона имеет одного владельца, но один человек может иметь несколько номеров."
Считаю, что фраза "Один номер телефона имеет одного владельца, но один человек может иметь несколько номеров." может сложить ложный вывод у начинающего читателя, что якобы значения в ассоциативном массиве должны быть уникальны. 89.179.126.100 09:40, 13 декабря 2018 (UTC)
- В нынешней версии статьи вообще наоборот написано "Примером ассоциативного массива является телефонный справочник: значением в данном случае является совокупность «Ф. И. О. + адрес», а ключом — номер телефона, один номер телефона имеет одного владельца, но один человек может иметь несколько номеров.", что по сути является неверным. Paul Landers (обс.) 20:42, 17 июня 2024 (UTC)