Как мне назвать этот класс коллекции?

Представьте себе подкласс Collection, который знает блок select и блок collect. Экземпляр этого класса оборачивает другой collection и динамически применяет к нему эти блоки. Так, например, #do: реализован как

do: aBlock
    collection
        select: [:element | select value: element]
        thenDo: [:element | | v |
            v := collect value: element.
            aBlock value: v]]

Итак, вопрос в том, как мне назвать этот класс? Я назвал его WrappedCollection, но это имя двусмысленно, и, кроме того, эта штука уже должна существовать и иметь имя.

Кстати, это очень похоже на Subclassing Stream, за исключением того, что у меня не Stream.


person Leandro Caniglia    schedule 10.04.2015    source источник
comment
Как насчет TransformedSelection   -  person Lyn Headley    schedule 10.04.2015
comment
@LynHeadley, спасибо за подсказку, это хорошо. Я внес его в свой список.   -  person Leandro Caniglia    schedule 11.04.2015
comment
@LynHeadley, почему бы тебе не сделать это ответом вместо комментария?   -  person Sean DeNigris    schedule 12.04.2015


Ответы (2)


Блоки select и collect звучат для меня как критерии состояния. Так что, возможно, вы могли бы назвать класс ConditionalCollection, подразумевая, что коллекция изменяется в ответ на применяемые условия.

И еще одна идея, которая у меня только что возникла: FilteredCollection.

person Max Leske    schedule 11.04.2015
comment
Первое имя, которое пришло мне на ум, было FilteredCollection. - person Esteban A. Maringolo; 28.04.2015

Наконец-то мы решили использовать DerivedCollection. Учитывая, что эти объекты представляют наборы, полученные из других источников, подобно тому как математические наборы могут быть определены намерением, а не расширением, мы выбрали имя, которое не раскрывает их внутреннее представление. .

Кстати, DerivedCollection особенно полезны для фильтрации (#select:) и преобразования (#collect:) больших объемов данных, которые мы представляем с помощью экземпляров StoredArray, разновидности Array, которая хранит свои элементы на диске.

person Leandro Caniglia    schedule 17.04.2015