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]に伝播する方法と見なすことができます。オカレンスは、フィルター関数がtrueの場合にのみ送信され、trueの場合、オカレンスはマップに渡され、その結果が送信されます。
このクラスは正しくコンパイルおよび機能しているようです。私の問題は、複数のチャネルをEventSource [T]インスタンスにアタッチして、オカレンスをさまざまなタイプのいくつかの異なるイベントソースに伝播できるようにすることです。私の混乱は基本的にこれを行う方法です:
class EventSource[T] {
var List[Channel[T,U]] list = ...
}
ここのUは何ですか?list
Tは、に属する(のメンバーである)EventSourceのタイプTから単純に参照されます。
これが曖昧または混乱している場合は申し訳ありません!
編集:私はまた、次のようにこのリストに追加できるようにしたいことに注意する必要があります:
list = list ++ List[Channel[T, U](new Channel[T, U](endPoint, filter, map))
追加は本当の問題ですか?