distinct 方法
- bool equals(
- T previous,
- T next
跳过如果数据事件与上一个数据事件相等。
返回的流提供与该流相同的事件,除了它永远不会提供两个连续的相等的数据事件。也就是说,错误会被传递到返回的流中,如果数据事件与最近发出的事件不同,则会传递数据事件。
相等性由提供的 equals
方法确定。如果省略了它,则使用最后一个提供的数据元素上的 '==' 运算符。
如果 equals
抛出异常,数据事件将被替换为包含抛出错误的错误事件。行为与原始流发出错误事件相同,并且不会改变最近发出的数据事件。
如果此流是广播流,则返回的流也是广播流。如果一个广播流被监听多次,每个订阅都将单独执行 equals
测试。
示例
final stream = Stream.fromIterable([2, 6, 6, 8, 12, 8, 8, 2]).distinct();
stream.forEach(print); // Outputs events: 2,6,8,12,8,2.
实现
Stream<T> distinct([bool equals(T previous, T next)?]) {
return new _DistinctStream<T>(this, equals);
}