在python中,如果你循环(或使用)
但是,据我所知,如果你想使用yield,你必须在javascript中明确地用星号标记函数*,并且不能像"常规函数那样处理计算值&#39 ; s返回值"在来电方面。
是否有javascript中的抽象来隐藏这些差异以获得与python相同的漂亮抽象?
答案 0 :(得分:1)
JavaScript中有几种结构,调用者不需要知道被调用的函数是生成器,还是需要返回数组,字符串,Map等的普通函数。这些返回值都具有共同点,它们是可迭代的。
以下是关于如何处理此类函数的返回值的两个示例:
迭代值:
N=NaN
根据for (let x of f()) {
// ...
}
返回的内容,f()
将如下所示:
根据值创建数组:
x
或者:
const copy = Array.from(f());
注意:const copy = [...f()];
的好处是它接受一个回调函数作为第二个参数:为每个值调用一个映射器。
将值作为参数传播到另一个函数
如果值是数字:
Array.from
由于Math.min(...f());
可以接受多个参数(不只是两个),因此它给出了整个系列的最小值(如Math.min
在Python中所做的那样)。
阅读有关迭代器和迭代的更多信息on MDN