функция Iterable::expand

Преобразует каждый элемент коллекции в 0 или более элементов новой коллекции

Синтаксис

Iterable
Iterable.expand
(Iterable f(E element))

Передаваемые параметры

Iterable f(E element)

Возвращаемое значение

Iterable

Описание

Метод expand позволяет получить новую коллекцию (составной объект), в которой значения элементов будут состоять из результатов выполнения пользовательской callback-функции Iterable f(E element) для каждого элемента исходной коллекции.

В отличии от метода Iterable.map данный метод может изменять количество элементов в новой коллекции, так как преобразовывает каждый исходный элемент в 0 или несколько новых.

Данный метод использует "ленивую" инициализацию новой коллекции. До тех пор, пока к элементам нового объекта не будет ни одного обращения, пользовательская функция f(E element) вызываться не будет и новые значения получены не будут. Кроме этого, значения элементов не будут кешироваться, и таким образом повторная итерация по новой коллекции будет приводить к повторному вызову пользовательской callback-функции.

  • функция Iterable f(E element) может возвращать результаты произвольного типа, а следовательно, тип возвращаемого объекта будет Iterable, а не Iterable[E].

Смотрите также

Iterable::map - Создаёт новый составной объект, на основе данного и выполнения пользовательской функции

Официальная документация (английский)