所以在我的情况下
def dynamic_data()
data = [] of String
# some data from db
# data << db["somekey"].to_s
return data
end
dynamic_data().cycle do |d|
# some stuff
puts d
end
我的数据超过500行并将继续增长和增加,如何首先进行循环完成循环,然后再从功能重新加载新数据,还是有其他方法? ,谢谢
答案 0 :(得分:1)
如何首先完成
cycle
完成循环
没有办法让Array#cycle
完成,因为它被明确设计为永久运行(除非调用break
,但这不太可能是您正在寻找的。)
如果我正确理解了您的意图,那么您正在尝试处理传入的数据部分。要做到这一点,需要更复杂的处理,例如:
class DataHandler
def initialize
@data = []
end
def data()
@data.tap(&:clear)
end
def data!(new_data)
@data << new_data
end
end
data_handler = DataHandler.new
loop do
break "empty data" if data_handler.data.empty?
puts data_handler.data
end
或者,正如JonneHaß在评论中指出的那样,使用yield
:
def dynamic_data()
data = []
loop do
data << new_data
yield data.tap(&:clear) if data.size > 100
end
end
dynamic_data do
puts d
end