问题标签 [generator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
3674 浏览

python - 对生成器使用前瞻

我在 Python 中实现了一个基于生成器的扫描器,它将字符串标记为形式为(token type, token value)的元组:

会打印

下一个任务意味着解析令牌流,为此,我需要能够在不向前移动指针的情况下从当前项目向前看一个项目。迭代器和生成器不会一次提供完整的项目序列,而是根据需要提供每个项目,这一事实使得前瞻与列表相比有点棘手,因为除非__next__()调用下一个项目,否则不知道下一个项目。

基于生成器的前瞻的简单实现是什么样的?目前我正在使用一种解决方法,这意味着从生成器中列出一个列表:

然后,可以通过以下方式轻松实现前瞻:

当然,这很好用。scan()但是考虑到这一点,我的第二个问题出现了:首先制造发电机真的有意义吗?

0 投票
0 回答
7293 浏览

ruby - ruby 中的引导生成器

可能重复:
Ruby中的Guids

如何在 ruby​​ 中生成全局唯一 ID(没有 rails/merb)?

0 投票
4 回答
22062 浏览

python - Python 逆向生成器

我正在寻找一种反转生成器对象的方法。我知道如何反转序列:

但是,将生成器作为输入,将反向生成器作为输出(len(seq) 保持不变,因此可以使用原始序列中的值),是否有类似的可能?

0 投票
2 回答
6167 浏览

c++ - C++ 中的生成器——无效使用非静态数据成员

我有点理解这一点,至少是生成器的功能(我在 Python 中使用过它们)。我了解 switch 语句及其内容是如何形成的。但是,我得到了这些错误。

这是代码。如果您有更好的处理方法,请务必分享。

0 投票
3 回答
138 浏览

syntax - 选择用于列表生成表达式的语法

C# 具有生成器函数,其语法如下:

我对我的编程语言(类似于 Java、Scala、ActionScript 和 C# 的简单面向对象编程)感兴趣的一个特性是生成器表达式。这些本质上是生成器函数的语法糖。

我目前最喜欢的候选人是以下语法:

该表达式range(0, 42)是一个内置的生成器函数。

所以我的问题是,您希望在 C#/Java/Scala/ActionScript 类型语言中看到生成器表达式的哪种语法,为什么?

一些可能影响响应的因素是,像 Scala 和 ActionScript,我的语言中的类型是在类型之后声明的。例如:

匿名函数也看起来像这样:

除此之外,我的语言语法的其余部分类似于 Java 或 C#。我的语言有一个foreach与 C# 非常相似的语句。

0 投票
1 回答
88 浏览

language-agnostic - 分配生成器功能时会发生什么?

如果我有一种具有一流功能的编程语言。共享生成器函数时的语义应该是什么?

例如:

我可以想象三件事:

  1. c == 2, d == 3 表示生成器函数是共享的
  2. c == 0, d == 2 表示创建了一个新的生成器函数,其值已初始化
  3. c == 2, d == 2 表示通过复制生成器的当前状态来创建一个新的生成器函数

在我看来,最好的答案将提供最有说服力的论据来做一种或另一种机制。我经常发现现有技术是最有说服力的论据。

0 投票
3 回答
1347 浏览

python - 在 Python 函数调用的参数列表中嵌套生成器表达式

有时,我喜欢使用以下习语将列表组合在一起:

(我知道有更简单的方法可以获得这个特定的结果,但是当你想要迭代列表列表中的元素时,它会派上用场,或者类似的东西。问题是,当你使用生成器表达式时,这个变得容易出错。例如

这里发生的是内部生成器表达式作为参数传递给itertools.chain,因此在评估它们时,外部生成器表达式已完成,并n固定为其最终值'b'. 我想知道除了“不要那样做”之外,是否有人想过避免这种错误的方法。

0 投票
2 回答
157 浏览

concurrency - 并行映射(生成器)运算符

我有兴趣为我的语言定义一个并行映射运算符。它将一个列表转换为一个给定表达式的新列表。它的语法类似于生成器。与 C# 和 Python 中的生成器不同,如果编译器需要,它可能会被并行评估(例如,有一个空闲内核,并且列表非常大)。它将被调用witheach以区分它foreach是按顺序执行的。

例如考虑:

我的问题是,对于可能会产生副作用的程序员来说,这会不会太不直观f?当然,我会说不要在文档中这样做,但是大多数程序员不阅读语言文档。:-)

我想更大的问题是,现代程序员能否适应他们语言中的隐式并行列表处理语义,还是他们需要更明确的东西?

0 投票
2 回答
1335 浏览

sql - 具有存储过程支持的 Perl 的 SQL 查询生成器

我正在处理的当前代码库充满了临时条件字符串连接,产生的 SQL 查询不够清晰。我想让它们可维护,但由于现在使用DBIx::Class太复杂而无法迁移(巨大的遗留基础),我希望至少通过使用某种 SQL 生成器使它们更健壮,这只会通过面向对象或任何其他干净的技术(无需数据库处理)创建 SQL。

该生成器的一个一般限制是能够以理智的方式使用存储过程,因为我的应用程序主要基于这些。例如,我需要SELECT * FROM StoredProcedure(Parameter) WHERE .... 我研究了Fey::SQLSQL::Abstract和其他一些,但除了“内联 SQL”之外,没有看到对这种语句的任何支持。我也没有看到对 的任何支持EXECUTE ...,甚至在DBIx::Class中也没有,坦率地说,我真的不敢相信,可能我一直在寻找错误的地方。

我实际上很喜欢Fey::SQL的方法,直到我发现它需要某种方案:

你会推荐什么?

0 投票
3 回答
1241 浏览

security - 根据凭据限制整个 symfony 管理生成器页面

我有一个包含大量管理生成器的网站来处理各种表格。在经过身份验证的用户领域内,我希望能够拒绝访问,不仅是单个操作或字段,而是整个管理模块。

似乎没有全局凭据参数generator.yml,并且在模块级别放入东西security.yml似乎没有任何效果。

我浏览了生成的代码并查看了cache/front/dev/modules/autoFoo/actions/actions.class.php,特别是 preExecute() ,但我不知道该怎么做。

我想我必须在我自己的 actions.class.php 文件中覆盖 preExecute() ,但我有点不确定需要什么,例如,何时调用 parent::preExecute() (如果事实上我需要到与否)。