我有以下类(class):
class EventableNumber{
num _val;
num get val => _val;
void set val(num v){
num oldValue = _val;
_val = v;
_controller.add(new NumberChangedEvent(oldValue, v));
}
StreamController<NumberChangedEvent> _controller = new StreamController<NumberChangedEvent>();
Stream<NumberChangedEvent> _stream;
Stream<NumberChangedEvent> get onChange => (_stream != null) ? _stream : _stream = _controller.stream.asBroadcastStream();
EventableNumber([num this._val = 0]);
}
是否可以重载
=
赋值运算符?而不是使用 val
getter 和 setter 强制事件在值更改时触发,如果它可以在用户写入 myEventableNum = 34
时完成,那就太好了然后 myEventableNum
首先它的onChange
事件,而不是 myEventableNum.val = 34
.
最佳答案
Dart 不允许这样做。
但是,您是否考虑过函数式调用?
基本上,如果您在 EventableNumber 类中定义了一个名为“call”的函数,那么您可以将实例作为函数调用:
myEventableNum(34)
如果你决定走这条路,建议实现 Function 接口(interface):
class EventableNumber implements Function {
...
void call(val) {...}
...
}
希望这可以帮助 :)
关于operator-overloading - Dart 你可以重载赋值运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940440/