Книга: JavaScript. Подробное руководство, 6-е издание
11.4.5. Выражения-генераторы
11.4.5. Выражения-генераторы
В JavaScript 1.8 [23]
можно заменить квадратные скобки в генераторах массивов круглыми скобками и получить выражения-генераторы. Выражение-генератор похоже на генератор массивов (синтаксис в круглых скобках в точности соответствует синтаксису в квадратных скобках), но его значением является объект генератора, а не массив. Преимущество выражений-генераторов перед генераторами массивов в том, что они используют прием отложенных вычислений - вычисления выполняются по мере необходимости, а не все сразу - и позволяют обрабатывать даже бесконечные последовательности. Недостаток генераторов состоит в том, что они обеспечивают только последовательный доступ к своим элементам. То есть, в отличие от массивов, генераторы не позволяют обращаться к элементам по индексам: чтобы получить n-е значение, придется выполнить n-1 итераций.
Ранее в этой главе мы реализовали функцию map():
// Функция-генератор, возвращающая f(х) для каждого элемента х итерируемого объекта і
function map(і. f) {
fоr(let x in і) yield f(x);
}
Выражения-генераторы позволяют избежать необходимости создавать или использовать такую функцию map(). Чтобы получить новый генератор h, возвращающий f (х) для каждого значения х, возвращаемого генератором g, достаточно использовать такой программный код:
let h = (f(x) for (x in g));
Используя генератор eachline() из примера 11.1, можно реализовать отсечение пробельных символов, а также фильтрацию комментариев и пустых строк, как показано ниже:
let lines = eachline(text);
let trimmed = (l.trim() for (1 in lines));
let nonblank = (1 for (1 in trimmed) if (1.length > 0 && 1[0]!='#'));
- 11.4.4. Генераторы массивов
- Индексы по выражениям
- Выражения в значениях по умолчанию для доменов
- Выражения в EXCEPTION
- 7.6. Генераторы
- 6. Выражения реляционной алгебры
- 3.13.7. Рекурсия в регулярных выражениях
- 6. Лекция: Обработка текстов. Регулярные выражения. Unicode.
- Применение лямбда-выражения в качестве задачи
- 4.2.2. Возвращаясь к строкам и регулярным выражениям
- Выражения с двумя цифрами
- 2.11 Условные выражения