Nim 中的迭代器生成函数:在分配迭代器时起作用,在直接调用它时卡住

2024-04-08

我尝试创建一个创建迭代器的过程,如下所示:

proc makeCDFrom(start: int): iterator(): int =
  result = iterator(): int =
    var
      i: int = start
    while i >= 0:
      echo "i:", i
      yield(i)
      dec(i)

let cdFrom6 = makeCDFrom(6)
for j in cdFrom6():
  echo "j:", j

这似乎按预期工作:

i:6
j:6
i:5
j:5
i:4
j:4
i:3
j:3
i:2
j:2
i:1
j:1
i:0
j:0

然而,最初,我尝试过这种细微的变化:

proc makeCDFrom(start: int): iterator(): int =
  result = iterator(): int =
    var
      i: int = start
    while i >= 0:
      echo "i:", i
      yield(i)
      dec(i)

# Note the direct call:
for j in makeCDFrom(6)():
  echo "j:", j

当我尝试运行上面的内容时https://play.nim-lang.org/ https://play.nim-lang.org/,它似乎被卡住了。什么都没有显示。

为什么会有这样的差异?


Why?

因为有一个错误。

你能为这个做什么?

向 github.com/nim-lang/Nim 报告错误

同时使用

let myClosureIter = makeCDFrom(6)

或者在没有工厂的情况下定义迭代器:

iterator makeCDFrom(start: int): int =
    var
      i: int = start
    while i >= 0:
      echo "i:", i
      yield(i)
      dec(i)

# Note the direct call:
for j in makeCDFrom(6):
  echo "j:", j
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nim 中的迭代器生成函数:在分配迭代器时起作用,在直接调用它时卡住 的相关文章

  • 调试时无法进入迭代器块 (C#)

    我正在尝试调试从单元测试项目执行的代码 但是当我尝试进入一个方法时 它只是直接传递到下一行 并且不会命中该方法内的断点 该方法位于不同项目中的一个类上 但所有代码都是在调试模式下构建的 我已经尝试清理和重建解决方案 但没有任何乐趣 然而 自
  • Boost Property_Tree迭代器,如何处理它们?

    抱歉 我之前问过关于同一主题的问题 但我的问题涉及那里描述的另一个方面 如何迭代提升 https stackoverflow com questions 4586768 how to iterate a boost property tre
  • Scala - 迭代器和 takeWhile

    我正在运行以下代码 val it List 1 1 1 2 2 3 3 iterator buffered val compare it head it takeWhile compare toList 它返回 1 1 1 但是 如果我将其
  • python累加while循环不断重复我做错了什么?

    我不明白我做错了什么 我尝试过使用中断 并尝试设置变量 我在 cengage 上执行此操作 这非常finnicky LeftOrRight py This program calculates the total number of lef
  • C++ 迭代模板 Map

    当我有一个包含模板映射和一个模板类const iterator声明如下代码typedef 如何迭代类外部映射的元素 例如 main 中以将它们打印在输出上 template
  • 删除元素时映射迭代器如何失效? [复制]

    这个问题在这里已经有答案了 使用擦除方法时 迭代器何时以及如何在映射中失效 例如 std map lt int int gt aMap aMap 33 1 aMap 42 10000 aMap 69 100 aMap 666 1 std m
  • Nim 中的迭代器生成函数:在分配迭代器时起作用,在直接调用它时卡住

    我尝试创建一个创建迭代器的过程 如下所示 proc makeCDFrom start int iterator int result iterator int var i int start while i gt 0 echo i i yi
  • 流Vs。 Map 的 EntrySet 中的迭代器 - Java 8

    据我了解 以下代码应该打印true 因为两者Stream and Iterator指向第一个元素 但是 当我运行以下代码时 它正在打印false final HashMap
  • 为什么不能使用整数作为 C# 中 while 循环的条件? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 使用如下所示的 while 循环时出现错误 我不明白为什么 int count 5 while count here s
  • 如果 python 迭代器返回可迭代对象,我如何将这些对象链接到一个大迭代器中?

    我将在这里给出一个简化的例子 假设我在 python 中有一个迭代器 并且该迭代器返回的每个对象本身都是可迭代的 我想获取此迭代器返回的所有对象并将它们链接在一起形成一个长迭代器 是否有一个标准实用程序可以实现这一点 这是一个人为的例子 x
  • tkinter root.mainloop 与 While True 循环

    我正在使用 tkinter 根据我正在读取的电压显示一些标签 但是 它会在一次读取后停止执行 我发现这是由于 root mainloop 造成的 但我无法修复它 我已经包含了我的代码 root mainloop 位于 while True
  • Unity3d 协程在 while 循环后停止

    我有一个加载关卡的单例 LevelManager 等待来自新加载关卡的脚本将 GameObject 分配给 LevelManager 然后对其进行处理 我有以下代码 some GameObject calls the loadLevel c
  • 并行迭代器

    我正在设计一个 C 数据结构 用于图形 供并行代码 使用 OpenMP 使用 假设我想要一个能够迭代所有元素 节点 的方法 当然 这个迭代将是并行的 是否可以使用迭代器来实现此目的 迭代器应该是什么样子才能实现并行访问 在这种情况下 您会建
  • 使用迭代器将部分文件流读入字符串

    这是我到目前为止所尝试过的但没有成功 std string ReadPartial std ifstream file int size std istreambuf iterator
  • while循环有两个参数吗?

    我的女士给了我一个问题要我解答 预测以下代码的输出 include
  • 打字稿地图迭代失败

    我正在使用下面的函数来比较两个地图 有趣的是 for 循环内的代码永远不会被执行 所以 console log key val 代码永远不会被执行 当然 我确保我正在比较的映射不为空并且大小相同 以强制执行 for 循环内的代码 我犯了一个
  • 如何使用生成器遍历文件系统?

    我正在尝试创建一个实用程序类来遍历目录中的所有文件 包括子目录和子子目录中的文件 我尝试使用发电机 因为发电机很酷 然而 我遇到了困难 def grab files directory for name in os listdir dire
  • while(foo) 与 while(foo != NULL)

    有人可以解释一下如何while foo vs while foo NULL 是等价的 还 while foo vs while foo NULL 我知道 不是 但这就是我所知道的全部 假设foo是指针类型 while foo and whi
  • 更改二维数组元素的值会更改整个列

    当我打印我的arrvalue 我得到了 2D 数组的正确值 但是当我退出 while 循环时 我的值都是错误的 我不确定我做错了什么 num runs n 4 x np linspace 1 1 n y np linspace 1 1 n
  • java.util.ConcurrentModificationException 和迭代?

    我对数组列表和迭代器非常陌生 这是我第一次遇到这个异常 我有一个 ArrayList u 我想做以下算法 for Character c u if k 1 base case if isAnswer s u get 0 System out

随机推荐

  • hsqldb Oracle 模式选择立即更新

    Oracle语法中的HSQLDB似乎不支持NOWAIT HSQLDB版本 2 3 3 with SET DATABASE SQL SYNTAX ORA TRUE SQL 产生异常 select a b c from sometable wh
  • 动态更改 UITableView 的内容

    我有一个 NSURL 对象 它根据用户在搜索栏中输入的变量从我的网站获取数据 我将这些数据拆分为 NSArray 完成后 我希望在 UITableView 中显示数据 我的问题是这样的 是否可以将数据动态加载到 UITableView 中
  • Orbeon 4.5 - 如何传递请求参数?

    我们正在从 Orbeon 3 9 升级到 4 5 在 Orbeon 3 9 中 我们将请求参数传递给发送成功 URI oxf fr detail send success uri 当用户单击自定义提交按钮时 我们通过修改来做到这一点pers
  • 对资源管理器中选定的文件执行 PowerShell 命令

    如何在 PowerShell 中仅对资源管理器中选定的文件执行重命名命令 我有 PS 命令 但我不知道将其放在 Windows 注册表中的何处 以便可以在资源管理器的右键单击上下文菜单中访问 HKCR shell 包含您需要的内容 使用您想
  • 将静态数据(不随时间变化)添加到 LSTM 中的序列数据

    我正在尝试建立一个如下图所示的模型 请看下图 我想在 LSTM 层中传递序列数据 在另一个前馈神经网络层中传递静态数据 血型 性别 后来我想将它们合并 然而 我对这里的维度感到困惑 如果我的理解是正确的 如图所示 5维序列数据如何与4维静态
  • 提取 Zip 内的目录

    我正在编写一个脚本 将 zip 存档中的文件提取到该脚本所在的目录中 这是我的代码 zip new ZipArchive if zip gt open latest zip TRUE zip gt extractTo zip gt clos
  • Web 服务器内置 Azure 应用服务

    背景 我正在托管一个静态 Web 应用程序 由 NUXTJS 在 Azure 应用服务上生成 现在我想通过以下方式配置更多内容web config比如为多个域设置 CORS 设置 但我找不到任何文档来确定 Azure 应用程序服务中集成 安
  • VB.NET 和 COM Interop 看似随机崩溃

    我正在考虑用 VB 6 重写一个全新的 VB NET 应用程序 该应用程序在终端服务下运行并大量使用 COM 由于某种原因 该应用程序存在随机奇怪之处 随机访问冲突错误 WinDbg 异常分析指向 dll 如 comdlg32 dll ms
  • Bigquery 如果字段存在

    简而言之 有没有办法在不存在的 BQ 字段中进行查询 并接收这些字段的 null 值 我有几乎同样的问题BigQuery IF 字段存在 THEN https stackoverflow com questions 32276601 big
  • PL/SQL 游标 for 循环

    我相信我需要一个循环游标来浏览表 test data 中的 street1 列 我有一个程序需要测试表中的每一行 这是我到目前为止所拥有的 cursor c1 is street1 from test data Begin If Instr
  • 如何调用Parent重写方法

    我有两个类 Parent 和 Child 从 Child 类 我调用父类重写方法 show 从父类 我调用另一个方法 display 但由于调用了 Child 方法 该方法也被重写 我想从show方法调用Parent方法display pu
  • jQuery - 翻转时更改另一个图像的 src

    我想知道是否有人可以帮助我 我有 2 张图像 如果有意义的话 我希望能够在翻转另一张图像时更改其中一张图像的 src 例如 我有 2 张图片 当有人将鼠标悬停在 imimage2 jpg 上时 我希望 imimage1 jpg 更改为 im
  • 我如何将长文本视图(字符串)显示到android的多个页面中

    我正在开发一个看起来像电子书阅读器 text pdf 文件等 的应用程序 我有一个巨大的文本 分为不同的章节或页面 现在的问题是如何将整个内容分成若干页并一页一页地显示 我怎么知道屏幕适合的字符数 取决于屏幕尺寸和字体大小 我完全不知道从哪
  • Javascript 加载、就绪、domready、DOMContentLoaded 事件

    我有点迷失在 启动 事件 有很多不同的事件 并且在 DOM 和各种框架 如 jQuery 中以不同的方式命名 所有可能的启动事件有哪些 它们有何不同 您能否显示一个简单的时间线来演示这些事件的触发顺序 ready JavaScript 提供
  • 逻辑运算的快捷方式

    我只是想知道 逻辑运算符 就像如果我想做类似的事情i i 10 我可以i 10 我搜索这个的原因是因为我有一个验证函数 它分为几个函数 以下是模拟 function f1 return Math ceil Math random 10 2
  • React JS 中适合父容器的多行文本

    我正在使用 Flexbox 布局 并尝试调整特定 div 中的文本大小以适合该 div 例如 如果我有如下代码 div div A really really really really long phrase here that will
  • 请注意,文档的某些部分可能包含文档检查器无法删除的个人信息

    I use Excel 2013 and Power View and SQL Server 2008 R2 创建我的后Data Source and my chart in Excel当我想要保存 Excel 文件时 我收到此消息 be
  • Elm - 检查值的类型

    是否存在检查 Elm 中变量类型的函数 例如 重复 numberTwo 2 returnType numberTwo number String 这样做的动机是当你使用Signal map n 通常会出现这样的情况 并非所有要应用的函数的参
  • 从外部访问 Leaflet.js GeoJson 功能

    我想从外部与传单驱动的地图的 GeoJson 覆盖层 多边形 进行交互L 的领域 但我似乎无法访问由L 互动包括 获取边界 我的特征 fitBounds 我的特征 设置样式 ETC 我可以看到 Leaflet 暴露了 L GeoJSON g
  • Nim 中的迭代器生成函数:在分配迭代器时起作用,在直接调用它时卡住

    我尝试创建一个创建迭代器的过程 如下所示 proc makeCDFrom start int iterator int result iterator int var i int start while i gt 0 echo i i yi