distinct 方法

Stream<T> distinct([
  1. bool equals(
    1. T previous,
    2. 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);
}