我是Julia的新手,并且已经遇到了一些我认为应该是常见情况的事情:
我想要一个迭代器,解析一个文本文件一次一行。因此,与eachline(f)类似,除了对每一行都应用了一个函数parse之外。如果愿意,可以调用结果eachline(parse, f) (就像带有额外函数参数的open版本):在eachline上映射parse。
更具体地说:我有一个函数poset(s::String),它将偏序集的字符串表示形式转换为偏序集:
function poset(s::String)
nums = split(s)
...
return transitiveclosure(g)
end现在我想说一些像这样的话
open("posets7.txt") do f
for p in eachline(poset, f)
#something
end
end(我特别需要它是一个迭代器:我的文件相当大,所以我真的想一次解析一行)。
发布于 2021-05-02 03:19:20
在这种情况下,我想我(个人)会使用Iterators.map:
open("posets7.txt") do f
for p in Iterators.map(poset, eachline(f))
# do something
end
end但是,正如文档所指出的(您自己也发现了),这等同于使用generator expression
open("posets7.txt") do f
for p in (poset(x) for x in eachline(f))
# do something
end
endhttps://stackoverflow.com/questions/67348301
复制相似问题