Nim lang 在行迭代器上使用对
有没有更优雅的方法?我想用iLine,行中行的inputFile,这样糖就成对了。然而,这似乎不适用于lines迭代器。是我做错了什么,还是这根本不可能 变量线性=0 对于输入文件中的行: 对于iCell,行中的单元格: var-val=false 如果单元格==: val=真 行[iCell]=val 映射[iLine]=行 iLine+=1Nim 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
我可能只是为文件定义对,这样您就可以编写
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中引入的,因此请确保您的版本是最新的。太棒了,谢谢!太棒了,谢谢!