Генерация при выполнении условия

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы изучим, как создать генераторную функцию на JavaScript, которая генерирует новые значения, пока выполняется заданное условие. Мы будем использовать функцию generateWhile, которая принимает начальное значение, функцию условия и функцию next, чтобы вычислить следующее значение из текущего значения и следующего начального значения. В конце этого практического занятия вы сможете создать пользовательские генераторы, которые можно использовать для генерации значений в соответствии с конкретными условиями и правилами.

Генератор, который генерирует значения, пока условие истинно

Для начала работы с кодом откройте Терминал/SSH и введите node. Это создаст генератор, который будет продолжать генерировать новые значения, пока выполняется заданное условие.

Генератор инициализируется начальным значением seed, которое используется для инициализации текущего значения val. Затем используется цикл while, чтобы выполнять итерации, пока функция condition, вызываемая с текущим значением val, возвращает true.

Ключевое слово yield используется для возврата текущего значения val и необязательного приема нового начального значения nextSeed. Функция next используется для вычисления следующего значения из текущего значения val и значения nextSeed.

const generateWhile = function* (seed, condition, next) {
  let val = seed;
  let nextSeed = null;
  while (condition(val)) {
    nextSeed = yield val;
    val = next(val, nextSeed);
  }
  return val;
};

Для использования генератора вызовите его с функциями seed, condition и next. Например, вызов [...generateWhile(1, v => v <= 5, v => ++v)] вернет [1, 2, 3, 4, 5].

Резюме

Поздравляем! Вы завершили практическое занятие "Генерация при выполнении условия". Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.