Dan*_*son 4 operator-overloading dart
我有以下课程:
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]);
}
Run Code Online (Sandbox Code Playgroud)
是否可以重载=赋值运算符?而不是使用valgetter和setter强制事件在值发生变化时触发,如果它可以在用户写入myEventableNum = 34然后myEventableNum首先执行其onChange事件时完成,而不是myEventableNum.val = 34.
Dart不允许这样做.
但是,您考虑过函数样式调用吗?
基本上,如果在EventableNumber类中定义一个名为"call"的函数,则可以将该实例作为函数调用:
myEventableNum(34)
Run Code Online (Sandbox Code Playgroud)
如果你决定采用这种方式,建议实现Function接口:
class EventableNumber implements Function {
...
void call(val) {...}
...
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |