Метод skipWhile
Метод skipWhile возвращает новую ленивую коллекцию, пропуская элементы исходной коллекции до тех пор, пока переданная функция-предикат возвращает true. Как только предикат вернёт false, метод прекращает пропуск и возвращает все оставшиеся элементы, включая текущий. В первый параметр мы передаём функцию, которая принимает элемент и возвращает bool. Если предикат всегда возвращает true, результатом будет пустая коллекция.
Синтаксис
iterable.skipWhile(bool Function(T element) test)
Пример
Давайте пропустим элементы списка, пока они меньше 3:
void main()
{
Iterable<int> iterable = [1, 2, 3, 4, 5];
Iterable<int> res = iterable.skipWhile((int element) => element < 3);
print(res);
}
Результат выполнения кода:
(3, 4, 5)
Пример
Давайте пропустим элементы списка, пока они равны 1. Как только встретится другое число, пропуск прекратится:
void main()
{
Iterable<int> iterable = [1, 1, 1, 2, 1, 3];
Iterable<int> res = iterable.skipWhile((int element) => element == 1);
print(res);
}
Результат выполнения кода:
(2, 1, 3)
Пример
Давайте пропустим элементы списка строк, пока их длина меньше 2:
void main()
{
Iterable<String> iterable = ['a', 'b', 'abcde', 'c', 'd'];
Iterable<String> res = iterable.skipWhile((String element) => element.length < 2);
print(res);
}
Результат выполнения кода:
(abcde, c, d)
Пример
Если предикат всегда возвращает true, то результатом будет пустая коллекция. Давайте проверим это:
void main()
{
Iterable<int> iterable = [1, 2, 3, 4, 5];
Iterable<int> res = iterable.skipWhile((int element) => true);
print(res);
}
Результат выполнения кода:
()