我应该如何命名这个集合 class?

How should I name this collection class?

想象一下 Collection 的子 class 知道一个 select 块和一个 collect 块。这个 class 的一个实例包装了另一个 collection 并动态地将这些块应用于它。因此,例如,#do: 实现为

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

所以,问题是我应该如何命名这个 class?我给它起了个名字WrappedCollection,但是这个名字是有歧义的,而且,这个东西必须已经存在并且有一个名字。

顺便说一下,这与 Subclassing Stream 非常相似,只是我的不是 Stream

selectcollect 块对我来说听起来像是条件标准。因此,也许您可​​以将 class 命名为 ConditionalCollection,暗示集合会根据所应用的条件而变化。

我刚才的另一个想法:FilteredCollection

我们终于决定使用 DerivedCollection。鉴于这些对象代表从其他来源获得的集合,就像数学集可以用 intention 而不是 extension 来定义一样,我们选择了一个不'揭示他们的内部代表。

顺便说一句,DerivedCollections 特别适用于过滤 (#select:) 和转换 (#collect:) 我们用 StoredArray 实例表示的大量数据,一种将其元素存储在磁盘上的 Array