我在 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))
}
}
}
这里可以将 Channel[T,U] 视为将 Occurrence[T] 从 EventSource[T] 传播到 EventSource[U] 的一种方式。仅当过滤器函数为真时才发送事件,如果是,则将事件传递给 map 并发送结果。
这个类似乎可以正确编译和运行。我的问题是我想将多个 Channel 附加到 EventSource[T] 实例,以便它可以将 Occurrences 传播到几个不同类型的不同 EventSource。我的困惑基本上是如何做到这一点:
class EventSource[T] {
var List[Channel[T,U]] list = ...
}
你在这里是什么?list
T 简单地从属于(是其中的成员)的 EventSource 中的类型 T 引用。
抱歉,如果这含糊不清或令人困惑!
编辑:我应该注意到我也希望能够附加到这个列表中,如下所示:
list = list ++ List[Channel[T, U](new Channel[T, U](endPoint, filter, map))
附加是真正的问题吗?