Crystal .cycle Recycle после завершения цикла
Так в моем случае
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 строк и будут продолжать расти и увеличиваться, как сначала сделать цикл завершения цикла, затем снова загрузить новые данные из функции, или есть другой метод?, Спасибо
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
Или, как указано в комментариях Джонн Хас, используя 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