Nim lang 在行迭代器上使用对

Nim lang 在行迭代器上使用对,nim-lang,Nim Lang,有没有更优雅的方法?我想用iLine,行中行的inputFile,这样糖就成对了。然而,这似乎不适用于lines迭代器。是我做错了什么,还是这根本不可能 变量线性=0 对于输入文件中的行: 对于iCell,行中的单元格: var-val=false 如果单元格==: val=真 行[iCell]=val 映射[iLine]=行 iLine+=1 我可能只是为文件定义对,这样您就可以编写 iterator pairs(f: File): (int, string) = var idx = 0

有没有更优雅的方法?我想用iLine,行中行的inputFile,这样糖就成对了。然而,这似乎不适用于lines迭代器。是我做错了什么,还是这根本不可能

变量线性=0 对于输入文件中的行: 对于iCell,行中的单元格: var-val=false 如果单元格==: val=真 行[iCell]=val 映射[iLine]=行 iLine+=1
我可能只是为文件定义对,这样您就可以编写

iterator pairs(f: File): (int, string) =
  var idx = 0
  for line in lines(f):
    yield (idx, line)
    inc idx

for idx, line in open("/tmp/a.nim"):
  echo idx
它可能有点模棱两可-例如,lines one清楚地表明您正在对索引行进行迭代。第二种方法是从迭代器返回int和string:

iterator idxLines(f: string): (int, string) =
  var idx = 0
  for line in lines(open(f)):
    yield (idx, line)
    inc idx

for idx, line in idxLines("/tmp/a.nim"):
  echo idx

我可能只是为文件定义对,这样您就可以编写

iterator pairs(f: File): (int, string) =
  var idx = 0
  for line in lines(f):
    yield (idx, line)
    inc idx

for idx, line in open("/tmp/a.nim"):
  echo idx
它可能有点模棱两可-例如,lines one清楚地表明您正在对索引行进行迭代。第二种方法是从迭代器返回int和string:

iterator idxLines(f: string): (int, string) =
  var idx = 0
  for line in lines(open(f)):
    yield (idx, line)
    inc idx

for idx, line in idxLines("/tmp/a.nim"):
  echo idx
您可以像这样使用迭代器:

import std / enumerate

for lnum, line in enumerate(lines inputFile):
  # Do your thing here.
此迭代器是在Nim v1.4.0中引入的,因此请确保您的版本是最新的。

您可以像这样使用迭代器:

import std / enumerate

for lnum, line in enumerate(lines inputFile):
  # Do your thing here.

此迭代器是在Nim v1.4.0中引入的,因此请确保您的版本是最新的。

太棒了,谢谢!太棒了,谢谢!