Какое имя для «умного» словаря (хеш-таблицы)? - PullRequest
0 голосов
/ 14 ноября 2009

Я ищу хорошее имя для пользовательского словаря, который автоматически инициализирует значение для запрошенного ключа, если он не существует, с использованием делегата. Реализация индексатора должна помочь понять, что он делает:

    public V this[K key]
    {
        get
        {
            V value;
            if (!_dictionary.TryGetValue(key, out value))
            {
                value = _defaultValueGenerator(key);
                _dictionary[key] = value;
            }
            return value;
        }
        set
        {
            _dictionary[key] = value;
        }
    }

Моя проблема не в коде, который работает нормально, но я не могу найти подходящее имя для этого класса ... Я подумал о AutoInitDictionary, но он звучит неправильно и не ' Это действительно передает идею о том, что «все ключи могут существовать».

Как бы вы назвали такой класс? Любое предложение будет оценено.


PS: пример того, как его можно использовать:

var charFrequencies = new AutoInitDictionary<char, int>(key => 0);
foreach(char c in text)
    charFrequencies[c]++;

Ответы [ 5 ]

4 голосов
/ 14 ноября 2009

Python имеет именно такой вид словаря, и они называют его defaultdict.

1 голос
/ 14 ноября 2009

А как насчет VirtualDictionary?

vir · tu · al (vûr'chōō-əl):

Существующие или вызывающие сущность или эффект, хотя и не действительные,форма

Существующая в уме, особенно как продукт воображения

Быть таковым в силе, силе или следствии, хотя на самом деле не является или явно выраженным

Временно смоделировано илирасширенный программным обеспечением

Все 4 определения в некоторой степени относятся к вашей реализации.

РЕДАКТИРОВАТЬ: Даже DynamicDictionary будет хорошо.

1 голос
/ 14 ноября 2009

Я бы предложил вариант FactoryDictionary.

0 голосов
/ 14 ноября 2009

FullDictionary?

0 голосов
/ 14 ноября 2009

Как насчет SmartDictionary ? Я думал, что ваш предмет был достаточно хорош. ;)

...