Files
tankz/src/common/haxe/ru/m/signal/Signal.hx
2018-03-01 12:05:06 +03:00

28 lines
509 B
Haxe

package ru.m.signal;
typedef Receiver<T> = T -> Void;
class Signal<T> {
private var receivers:Array<Receiver<T>>;
public function new() {
receivers = [];
}
public function connect(receiver:Receiver<T>):Void {
receivers.push(receiver);
}
public function disconnect(receiver:Receiver<T>):Void {
receivers.remove(receiver);
}
public function emit(value:T):Void {
for (receiver in receivers) {
receiver(value);
}
}
}