![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
sibedir |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 5.12.2008 Где: Россия Алтайский кр. г.Барнаул Репутация: нет Всего: нет |
Не могу понять логику применения/использования IComparer<T> при работе с дженериками коллекций. При создании TList<ТAnyType> можно указать экземпляр интерфейса IComparer<T>. Таким образом, если для экземпляра какого-то типа/класса (ТAnyType) определена своя логика сравнения, то её можно передать в список. (если не определена, он, грубо говоря, будет сравнивать побайтно используя TComparer<T>.Default)
Допустим теперь, что мне нужно выбрать элементы из такого списка, сравнивая их с заданным. Т.е. Есть List = TList<ТAnyType> и есть Something = ТAnyType. И мне нужно, например, удалить из списка все элементы, которые меньше Something. НО! Тип ТAnyType разрабатываю не я и список List создаю не я. И мне не известно заранее имеет ли ТAnyType свой TComparer и назначен ли он при создании списка. Вопрос: Как из конкретного экземпляра TList<ТAnyType> вытащить его Comparer? Или я вообще не понимаю тут логигу использования IComparer<T>? Просто ну как-то странно, если для элементов вот конкретного списка есть конкретный алгоритм сравнения и о ней знает список, то почему бы списку не расшарить информацию об этом алгоритме? Зачем они его скрыли? Например я сижу в приёмной коммисии. Приходят и уходят соискатели на курсы (TCandidate). Есть список этих абитуриентов TEnrolleeList = TList<TCandidate>. Его создал декан и при создании указал каким именно способом сравнивать их между собой (в контексте конкретно этого списка) OurEntrants := TEnrolleeList.Create(TSpecEnrolleeComparer). Я периодически сортирую список. При чём мне для этого не нужно знать метод сравнения. Тупо выполняю OurEntrants.Sort. Тут приводят несколько соискателей и спрашивают, у кого из них больше шансов поступить конкретно на наши курсы? А декана нет на месте и TSpecEnrolleeComparer в его кабинете под замком. Это сообщение отредактировал(а) sibedir - 21.3.2023, 10:28 |
|||
|
||||
sibedir |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 5.12.2008 Где: Россия Алтайский кр. г.Барнаул Репутация: нет Всего: нет |
Вот и весь хрен до копейки. Скачал последнюю версию RAD
Парам-парам-пам. Пам. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |