another big refactor
This commit is contained in:
28
src/lib/observable/ObservableValue.hx
Normal file
28
src/lib/observable/ObservableValue.hx
Normal file
@@ -0,0 +1,28 @@
|
||||
package lib.observable;
|
||||
|
||||
using tink.CoreApi;
|
||||
|
||||
class ObservableValue<T> implements Observable<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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user