【发布时间】:2018-11-21 01:20:27
【问题描述】:
在python中,如果你循环(或消耗)一个
- 迭代器
- 函数返回值
你甚至不知道你有哪一个。因此,如果您已从被调用者返回或产生值以在调用者中使用,那么调用者方面并不重要。
然而,据我所知,如果你想在 javascript 中使用 yield,你必须用星号显式标记函数 *,并且不能将计算值视为与“常规函数的返回值”相同的方式调用方。
在 javascript 中是否有一个抽象来隐藏这些差异以获得与 python 相同的漂亮抽象?
【问题讨论】:
-
@Jony-Y:你的链接坏了;解析器不考虑链接的
*部分。 This one should go where you wanted it to. -
不知道为什么 JS 生成器语法会困扰你...你有如何做到这一点的解决方案。你只是不想使用生成器语法吗?
-
@user2357112 谢谢。在阅读了这个问题后,我看到他知道 JS 中的生成器是什么。我试图了解他们的问题是什么,或者只是困扰他的糖衣
-
对于第二个问题(“不能以同样的方式处理计算值”):有几个结构在数组上和在迭代器上一样有效,因为数组的迭代器用于那个案子。例如:
for (let x of f())。f可以是生成器,也可以是返回数组等可迭代对象的普通函数。 -
在 JS 中是
Array.from(f())或[...f()]。阅读有关可迭代对象和迭代器的信息(注意区别)on MDN。它有示例、语法等。
标签: javascript python iterator generator