Dart流-跳过而未跳过事件

问题描述 投票:0回答:1

似乎不像skipWhile在做什么...还是我理解这个错误?

下面的代码...我希望skipWhile删除两个条目!

Dart版本(来自Flutter Doctor):Dart version 2.9.0 (build 2.9.0-10.0.dev 7706afbcf5)

import 'package:flutter_test/flutter_test.dart';

class Car {
  final String name;
  final bool active;
  final int wheels;

  Car({this.name, this.active=true, this.wheels=4});
}

void main() {
  test("Check skipWhile", () {
    List dataSet = [
      Car(name: "Thunder", active: false),
      Car(name: "Lightening", active: false),
      Car(name: "Dinky", wheels: 3),
      Car(name: "Camry"),
      Car(name: "Outback"),
    ];

    List activeCars = dataSet.skipWhile((car) => car.active).toList();

    expect(activeCars.length, 3);
  });
}
dart
1个回答
0
投票

如果您阅读了skipWhile的文档,将会看到:

返回满足测试条件时跳过前导元素的Iterable。

因此,它只是跳过前导元素,而不是所有元素。

您正确想要的是skipWhile,它可以:

返回一个新的惰性迭代器,其中所有满足谓词测试的元素。

因此,如果我在您的示例中将where更改为where,则现在长度为3:

skipWhile
© www.soinside.com 2019 - 2024. All rights reserved.