28 lines
509 B
Haxe
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);
|
|
}
|
|
}
|
|
}
|