ToLookupDictionary
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.08.17 08:20
Оценка:
Пока не зарелизились) Почему ToLookupDictionary, а не просто ToDictionary? Немного сбивает с толку. Приходится смотреть в код, чтобы понять, что отличие только в DuplicateHandling.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Отредактировано 26.08.2017 8:22 rameel . Предыдущая версия .
Re: ToLookupDictionary
От: Sinix  
Дата: 26.08.17 09:12
Оценка:
Здравствуйте, rameel, Вы писали:

R>Пока не зарелизились) Почему ToLookupDictionary, а не просто ToDictionary? Немного сбивает с толку. Приходится смотреть в код, чтобы понять, что отличие только в DuplicateHandling.

Потому что цели разные (спасибо за фиксы, кстати ).

ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент. Как пример — переопределяемые конфиги (last wins) или поиск элементов в нескольких коллекциях-кандидатах (first wins)
throws чисто в нагрузку добавился. То, что там на выходе именно Dictionary — просто совпадение, самый подходящий тип из штатных.

Есть имя получше — велкам!
Re[2]: ToLookupDictionary
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.08.17 10:08
Оценка:
Здравствуйте, Sinix, Вы писали:

S>ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент.


Так в ToDictionary также

S>Как пример — переопределяемые конфиги (last wins) или поиск элементов в нескольких коллекциях-кандидатах (first wins)

S>throws чисто в нагрузку добавился. То, что там на выходе именно Dictionary — просто совпадение, самый подходящий тип из штатных.

Ну если смотреть, то у нас, что в стандартной, что в нашей, идет разложение коллекции на ключ/значение с одним видимым отличием: с ключиком, что делать, если встретился дубликат.


ЗЫ.
Я к чему спросил то) Я когда сам воспользовался кодом (как под заказ)) ), первым делом залез под капот, чтобы посмотреть, что там, но зацепился я именно из-за параметра duplicateHandling — и подумал, что это наверное то, что мне нужно, но название заставило лезть внутрь.

Если что, то вопрос названия не принципиальный.


ЗЫЫ. А вообще, очень уж востребованное добавление. Странно, что его нет в стандартной библиотеке.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: ToLookupDictionary
От: Sinix  
Дата: 26.08.17 11:56
Оценка:
Здравствуйте, rameel, Вы писали:

R>Так в ToDictionary также

Убедил
Если срочно — сделай свм правки плиз, я смогу только как с тулингом и netstandard 2 разберусь.
Re: ToLookupDictionary
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.08.17 08:56
Оценка:
Здравствуйте, rameel, Вы писали:

R>Пока не зарелизились) Почему ToLookupDictionary, а не просто ToDictionary? Немного сбивает с толку. Приходится смотреть в код, чтобы понять, что отличие только в DuplicateHandling.


Согласен. При наличии доппараметра вполне очевидно и из него. Единственное, я бы енум переименовал в DuplicateHandlingPolicy или просто DuplicatePolicy.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: ToLookupDictionary
От: rameel https://github.com/rsdn/CodeJam
Дата: 27.08.17 09:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Единственное, я бы енум переименовал в DuplicateHandlingPolicy или просто DuplicatePolicy.


Может тогда в DictionaryDuplicatePolicy?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Re[2]: ToLookupDictionary
От: Слава  
Дата: 27.08.17 09:35
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Есть имя получше — велкам!


ToUniqueValuesDictionary
Re[3]: ToLookupDictionary
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.08.17 10:42
Оценка:
Здравствуйте, rameel, Вы писали:

AVK>>Единственное, я бы енум переименовал в DuplicateHandlingPolicy или просто DuplicatePolicy.

R>Может тогда в DictionaryDuplicatePolicy?

Потенциально, имхо, оно может не только для словарей сгодиться.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: ToLookupDictionary
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.08.17 10:43
Оценка:
Здравствуйте, Слава, Вы писали:

S>>Есть имя получше — велкам!

С>ToUniqueValuesDictionary

Dictionary по определению unique keys. А уникальность values тут вообще не в тему.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: ToLookupDictionary
От: rameel https://github.com/rsdn/CodeJam
Дата: 27.08.17 11:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

R>>Может тогда в DictionaryDuplicatePolicy?


AVK>Потенциально, имхо, оно может не только для словарей сгодиться.


Вообще да, ну тогда я за DuplicatePolicy
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Re[4]: ToLookupDictionary
От: Слава  
Дата: 27.08.17 11:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>>Есть имя получше — велкам!

С>>ToUniqueValuesDictionary

AVK>Dictionary по определению unique keys. А уникальность values тут вообще не в тему.


Цитирую:

ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент.


Именно что уникальность values.
Re[5]: ToLookupDictionary
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.08.17 12:14
Оценка:
Здравствуйте, Слава, Вы писали:

С>Цитирую:

С>

С>ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент.

С>Именно что уникальность values.

Нет. Ты неверно понял. Суть в том что у нас есть некая коллекция ключ-значение, но ключи в ней не уникальны. Можно сделать group by, но тогда вместо значений будет коллекция значений. Этот метод раюотает по другому. Если в коллекции встретился дубликат ключа, то используется либо первое встреченное значение, либо последнее, либо кидается исключение (дефолтное поведение стандартного ToDictionary).
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: ToLookupDictionary
От: Sinix  
Дата: 27.08.17 16:29
Оценка: +2
Здравствуйте, rameel, Вы писали:


R>Вообще да, ну тогда я за DuplicatePolicy


Я против. Policy — это ересь из явы, в дотнете стандартный суффикс — Mode.
Если серьёзно, то тут суффикс и не нужен. Штатные StringComparison, FileShare etc как-то без них обходятся
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.