Re[4]: Вопрос по корутинам
От: rg45 СССР  
Дата: 27.08.25 11:22
Оценка: +1
Здравствуйте, sergii.p, Вы писали:

SP>Пока второй вариант многословней. Но и надо понимать, что StateMachine однотипный для всех корутин. Заново его писать не придётся. Основная бизнес-логика сосредоточена в runMachine. Тогда как в первом примере логика больше перенесена в StateMachine.


Я бы ещё добавил эквивалентный вариант с использованием std::generator для полноты картины:

http://coliru.stacked-crooked.com/a/a01d31f13490f65c

#include <generator>
#include <iostream>
#include <string>

std::generator<std::string> runMachine() {
    co_yield "Idle";
    co_yield "Started";
    co_yield "Processing";
    co_yield "Stopped";
}

int main() {
    for (const std::string& state : runMachine())
        std::cout << "State: " << state << std::endl;
}

State: Idle
State: Started
State: Processing
State: Stopped

Офигенная машина состояний. Паровоз Черепановых нервно пыхтит в коридоре
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 27.08.2025 11:27 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.