简介
在本实验中,我们将探索如何在 JavaScript 中创建一个生成器函数,该函数在满足给定条件时生成新值。我们将使用 generateWhile 函数,该函数接受一个种子值、一个条件函数和一个 next 函数,以便根据当前值和下一个种子计算下一个值。在本实验结束时,你将能够创建自定义生成器,可用于根据特定条件和规则生成值。
在本实验中,我们将探索如何在 JavaScript 中创建一个生成器函数,该函数在满足给定条件时生成新值。我们将使用 generateWhile 函数,该函数接受一个种子值、一个条件函数和一个 next 函数,以便根据当前值和下一个种子计算下一个值。在本实验结束时,你将能够创建自定义生成器,可用于根据特定条件和规则生成值。
要开始编码,请打开终端/SSH 并输入 node。这将创建一个生成器,只要满足给定条件,它就会持续生成新值。
生成器使用一个 seed 值进行初始化,该值用于初始化当前的 val。然后使用一个 while 循环进行迭代,只要使用当前 val 调用的 condition 函数返回 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 中练习更多实验来提升你的技能。