У меня проблема с общим классом, который я создаю в 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] можно рассматривать как способ передачи Вхождения [T] из EventSource [T] в EventSource [U].Вхождение отправляется только в том случае, если функция фильтра имеет значение true, и если это так, вхождение передается на карту, и результат этого отправляется.
Этот класс, кажется, компилируется и функционирует правильно.Моя проблема заключается в том, что я хочу подключить несколько каналов к экземпляру EventSource [T], чтобы он мог распространять события в нескольких различных источниках событий различных типов.Моя путаница в основном, как это сделать:
class EventSource[T] {
var List[Channel[T,U]] list = ...
}
Что такое U здесь?На T просто ссылаются из типа T в EventSource, к которому list
принадлежит (является членом).
Извините, если это расплывчато или запутанно!
РЕДАКТИРОВАТЬ: Я должен иметьотметил, что я также хочу иметь возможность добавить в этот список, как в:
list = list ++ List[Channel[T, U](new Channel[T, U](endPoint, filter, map))
Является ли добавление реальной проблемой?