gpt4 book ai didi

用于不可搜索流的 Ruby 迭代器

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:26 24 4
gpt4 key购买 nike

我想从 Ruby 中的不可搜索流中读取数据记录。我想由用户决定是否应跳过或读取当前记录。通常你会包含 Enumerable 并提供必要的方法让它在 Ruby 中有一个迭代器,但在我的例子中数据可以被跳过并且只有一次迭代是可能的,所以我不确定我应该怎么做做。

你更喜欢哪一个?

while record = foo.next
if bar
foo.read
else
foo.skip
end
end

foo.each do |record|
if bar
foo.read
else
foo.skip
end
end

最佳答案

惰性求值?

听起来很适合懒惰求值。

如何为实现每个具有惰性评估的访问器的 block 生成一条记录,并在它被使用时读取该记录。

如果有很多访问器,您可以只产生一个属性方法来检查读取处理是否已完成,如果需要则执行,然后返回记录。

foo.each do |record_manager|
if bar
puts record_manager.get.field1 # get does foo.read, whatever that does
puts record_manager.get.field2 # just returns the processed object this time
else
# each() will do .skip() if no get() was called
end
end

顺便问一下,跳过和阅读的动机是什么?执行速度?如果是这样,我可能会尝试简单的方法并始终阅读,看看它是否足够快。

关于用于不可搜索流的 Ruby 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com