我遇到了我在Scala中创建的泛型类的问题。我有以下类:Scala中的集合中的一般类型的类
class Channel[T, U](val endPoint : EventSource[U], val filter : Occurrence[T] => Boolean,
val map : Occurrence[T] => Occurrence[U]) {
def send(occurrence : Occurrence[T]) {
if (filter(occurrence)) {
endPoint.occur(map(occurrence))
}
}
}
这里一个信道[T,U]可以被看作是从EventSource的[T]至EventSource的[U]中传播的发生[T]的方法。只有在过滤器函数为true时才会发送该事件,如果是,则将事件传递给map并将其结果发送出去。
这个类似乎编译和功能正常。我的问题是,我想将几个通道附加到EventSource [T]实例,以便它可以将发生次数传播到不同类型的几个不同EventSources。我的困惑基本上是这样做的:
class EventSource[T] {
var List[Channel[T,U]] list = ...
}
你在这里是什么? T简单地从list
所属的EventSource中的类型T引用(是其成员)。
对不起,如果这是一个模糊或混乱!
编辑:我应该指出的是,我也希望能够追加到此列表中:
list = list ++ List[Channel[T, U](new Channel[T, U](endPoint, filter, map))
是追加真正的问题?
“你需要一个子类信道的除了将其发送到另一个EventSource之外,还会做其他事情“ - 我不明白你的意思。 – seadowg