【发布时间】:2018-12-26 00:03:46
【问题描述】:
我知道有两种方法可以将数据添加到流控制器,一种是直接添加数据,另一种是使用接收器。我试图阅读 Sink 的文档,但我无法理解它的概念,例如数据管道等。
【问题讨论】:
我知道有两种方法可以将数据添加到流控制器,一种是直接添加数据,另一种是使用接收器。我试图阅读 Sink 的文档,但我无法理解它的概念,例如数据管道等。
【问题讨论】:
什么都没有。这在内部做同样的事情。
.sink 属性的真正目的是将其作为其他对象的参数传递。如:
MyClass(
sink: myController.sink,
)
这可以防止类访问他们不应该能够访问的属性。
但是StreamController 实现了Sink 那么有什么意义呢?
没错。但是将StreamController 转换为Sink 与创建Sink 不同。
例如,使用Sink 的类可以很好地执行以下操作:
StreamSink sink = StreamController();
if (sink is StreamController) { // this is true
// access StreamController custom methods
}
sink 字段用于防止这种情况。它翻译成以下内容:
StreamSink sink = StreamController().sink;
if (sink is StreamController) { // false this time
// never reached
}
【讨论】: