问题标签 [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.
python - 对生成器使用前瞻
我在 Python 中实现了一个基于生成器的扫描器,它将字符串标记为形式为(token type, token value)的元组:
会打印
下一个任务意味着解析令牌流,为此,我需要能够在不向前移动指针的情况下从当前项目向前看一个项目。迭代器和生成器不会一次提供完整的项目序列,而是根据需要提供每个项目,这一事实使得前瞻与列表相比有点棘手,因为除非__next__()
调用下一个项目,否则不知道下一个项目。
基于生成器的前瞻的简单实现是什么样的?目前我正在使用一种解决方法,这意味着从生成器中列出一个列表:
然后,可以通过以下方式轻松实现前瞻:
当然,这很好用。scan()
但是考虑到这一点,我的第二个问题出现了:首先制造发电机真的有意义吗?
ruby - ruby 中的引导生成器
可能重复:
Ruby中的Guids
如何在 ruby 中生成全局唯一 ID(没有 rails/merb)?
python - Python 逆向生成器
我正在寻找一种反转生成器对象的方法。我知道如何反转序列:
但是,将生成器作为输入,将反向生成器作为输出(len(seq) 保持不变,因此可以使用原始序列中的值),是否有类似的可能?
c++ - C++ 中的生成器——无效使用非静态数据成员
我有点理解这一点,至少是生成器的功能(我在 Python 中使用过它们)。我了解 switch 语句及其内容是如何形成的。但是,我得到了这些错误。
这是代码。如果您有更好的处理方法,请务必分享。
syntax - 选择用于列表生成表达式的语法
C# 具有生成器函数,其语法如下:
我对我的编程语言(类似于 Java、Scala、ActionScript 和 C# 的简单面向对象编程)感兴趣的一个特性是生成器表达式。这些本质上是生成器函数的语法糖。
我目前最喜欢的候选人是以下语法:
该表达式range(0, 42)
是一个内置的生成器函数。
所以我的问题是,您希望在 C#/Java/Scala/ActionScript 类型语言中看到生成器表达式的哪种语法,为什么?
一些可能影响响应的因素是,像 Scala 和 ActionScript,我的语言中的类型是在类型之后声明的。例如:
匿名函数也看起来像这样:
除此之外,我的语言语法的其余部分类似于 Java 或 C#。我的语言有一个foreach
与 C# 非常相似的语句。
language-agnostic - 分配生成器功能时会发生什么?
如果我有一种具有一流功能的编程语言。共享生成器函数时的语义应该是什么?
例如:
我可以想象三件事:
- c == 2, d == 3 表示生成器函数是共享的
- c == 0, d == 2 表示创建了一个新的生成器函数,其值已初始化
- c == 2, d == 2 表示通过复制生成器的当前状态来创建一个新的生成器函数
在我看来,最好的答案将提供最有说服力的论据来做一种或另一种机制。我经常发现现有技术是最有说服力的论据。
python - 在 Python 函数调用的参数列表中嵌套生成器表达式
有时,我喜欢使用以下习语将列表组合在一起:
(我知道有更简单的方法可以获得这个特定的结果,但是当你想要迭代列表列表中的元素时,它会派上用场,或者类似的东西。问题是,当你使用生成器表达式时,这个变得容易出错。例如
这里发生的是内部生成器表达式作为参数传递给itertools.chain
,因此在评估它们时,外部生成器表达式已完成,并n
固定为其最终值'b'
. 我想知道除了“不要那样做”之外,是否有人想过避免这种错误的方法。
concurrency - 并行映射(生成器)运算符
我有兴趣为我的语言定义一个并行映射运算符。它将一个列表转换为一个给定表达式的新列表。它的语法类似于生成器。与 C# 和 Python 中的生成器不同,如果编译器需要,它可能会被并行评估(例如,有一个空闲内核,并且列表非常大)。它将被调用witheach
以区分它foreach
是按顺序执行的。
例如考虑:
我的问题是,对于可能会产生副作用的程序员来说,这会不会太不直观f
?当然,我会说不要在文档中这样做,但是大多数程序员不阅读语言文档。:-)
我想更大的问题是,现代程序员能否适应他们语言中的隐式并行列表处理语义,还是他们需要更明确的东西?
sql - 具有存储过程支持的 Perl 的 SQL 查询生成器
我正在处理的当前代码库充满了临时条件字符串连接,产生的 SQL 查询不够清晰。我想让它们可维护,但由于现在使用DBIx::Class太复杂而无法迁移(巨大的遗留基础),我希望至少通过使用某种 SQL 生成器使它们更健壮,这只会通过面向对象或任何其他干净的技术(无需数据库处理)创建 SQL。
该生成器的一个一般限制是能够以理智的方式使用存储过程,因为我的应用程序主要基于这些。例如,我需要SELECT * FROM StoredProcedure(Parameter) WHERE ...
. 我研究了Fey::SQL、SQL::Abstract和其他一些,但除了“内联 SQL”之外,没有看到对这种语句的任何支持。我也没有看到对 的任何支持EXECUTE ...
,甚至在DBIx::Class中也没有,坦率地说,我真的不敢相信,可能我一直在寻找错误的地方。
我实际上很喜欢Fey::SQL的方法,直到我发现它需要某种方案:
你会推荐什么?
security - 根据凭据限制整个 symfony 管理生成器页面
我有一个包含大量管理生成器的网站来处理各种表格。在经过身份验证的用户领域内,我希望能够拒绝访问,不仅是单个操作或字段,而是整个管理模块。
似乎没有全局凭据参数generator.yml
,并且在模块级别放入东西security.yml
似乎没有任何效果。
我浏览了生成的代码并查看了cache/front/dev/modules/autoFoo/actions/actions.class.php
,特别是 preExecute() ,但我不知道该怎么做。
我想我必须在我自己的 actions.class.php 文件中覆盖 preExecute() ,但我有点不确定需要什么,例如,何时调用 parent::preExecute() (如果事实上我需要到与否)。