【发布时间】:2011-11-30 14:58:34
【问题描述】:
我在 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 = ...
}
你在这里是什么? T 只是从 list 所属的 EventSource 中的类型 T 引用(是其中的成员)。
对不起,如果这含糊不清或令人困惑!
编辑:我应该注意到我也希望能够附加到这个列表中:
list = list ++ List[Channel[T, U](new Channel[T, U](endPoint, filter, map))
追加是真正的问题吗?
【问题讨论】:
标签: generics scala types collections typing