Итоги — Генератор чисел
Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 53 из 54.
Задание
ЛегкоНапишите функцию createNumberGenerator, которая принимает count и возвращает строку, содержащую все числа, сгенерированные сопрограммой (coroutine).
Создайте сопрограмму, которая последовательно генерирует числа, начиная с 1. Каждый раз, когда выполнение сопрограммы возобновляется, она должна возвращать (yield) следующее число в последовательности. Возобновите работу сопрограммы count раз, чтобы собрать все сгенерированные числа, а затем верните их в виде одной строки, где каждое число находится на новой строке.
Логика:
- Создайте функцию, которая использует цикл для возврата чисел 1, 2, 3 и т. д. через yield.
- Оберните эту функцию в сопрограмму с помощью
coroutine.create() - Возобновляйте выполнение сопрограммы
countраз, собирая каждое возвращенное число - Объедините все числа, используя символ новой строки в качестве разделителя
- Верните полученную строку
Параметры:
count(number): Количество значений, которые необходимо сгенерировать из последовательности
Возвращает: Строку, содержащую все сгенерированные числа, разделенные символом новой строки (string). Формат: 1\n2\n3
Попробуйте сами
function createNumberGenerator(count)
-- Напишите код здесь
end
Все уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов3Продвинутые концепции функций
Возврат нескольких значенийВариативные функции (...)Функции как объекты первого классаАнонимные функцииЧто такое замыкание?Итоги — простой обработчик событий9Корутины для начинающих
Что такое корутина?coroutine create и resumeПауза с помощью coroutine.yield()resume и yieldПроверка статуса корутиныИтоги — Генератор чиселИтоги — Векторная математика