我遇到了我在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