cc-haxe/src/lib/observable/ObservableValue.hx

29 lines
537 B
Haxe

package lib.observable;
using tink.CoreApi;
class ObservableValue<T> implements IObservable<T> {
private var value:T;
private var callbacks:CallbackList<T> = new CallbackList();
public function new(value:T) {
this.value = value;
}
public function set(value:T) {
if (value != this.value) {
this.value = value;
callbacks.invoke(value);
}
}
public function get():T {
return value;
}
public function subscribe(callback:Callback<T>):CallbackLink {
callback.invoke(value);
return callbacks.add(callback);
}
}