evgkul 571 Опубликовано: 23 февраля, 2018 (изменено) Данная библиотека позволяет "проскочить" несколько подпрограмм при вызове coroutine.yield (и coroutine.resume в эту же подпрограмму). Пример: local yieldto = require('yieldto') local coroutines = {} for num = 1,5 do coroutines[num] = coroutine.create(function() local message if num == #coroutines then message='IT WORKS!' end print('Entered coroutine number',num) if num < #coroutines then _,message = coroutine.resume(coroutines[num+1]) else coroutine.yieldto(coroutines[1],message) end print('Reentered coroutine number',num,'Message: ',message) if num < #coroutines then coroutine.resume(coroutines[num+1]) end end) end coroutine.resume(coroutines[1]) При вызове этого примера порядок переходов между подпрограммами следующий: 1,2,3,4,5,1,5,4,3,2,1 Скачать Изменено 23 февраля, 2018 пользователем evgkul 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 23 февраля, 2018 Короутины сами по себе - довольно сложная для понимания тема (по сравнению с фанкшионами, к примеру). А тут так мало букв использовано для описания библиотеки. Попытался вкурить, что значит "проскочить" несколько подпрограмм и зачем это нужно. Не получилось. Видать, старею 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evgkul Автор темы 571 Опубликовано: 23 февраля, 2018 Короутины сами по себе - довольно сложная для понимания тема (по сравнению с фанкшионами, к примеру). А тут так мало букв использовано для описания библиотеки. Попытался вкурить, что значит "проскочить" несколько подпрограмм и зачем это нужно. Не получилось. Видать, старею В пример глянь, там нагляднее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 23 февраля, 2018 Короутины сами по себе - довольно сложная для понимания тема (по сравнению с фанкшионами, к примеру). А тут так мало букв использовано для описания библиотеки. Попытался вкурить, что значит "проскочить" несколько подпрограмм и зачем это нужно. Не получилось. Видать, старею Аналогично. Не смог понять, зачем это нужно. Код из разряда "а вам слабо?". Возникает смешанное чувство восхищения и недоумения. Автору лайк за любопытную демонстрацию. Надеюсь на расширение описания смысла библиотеки и добавление примеров, приближенных к практике. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 23 февраля, 2018 (изменено) Библиотека проста, только её читать... ещё то удовольствие это, с таким-то стилем кода. Но это субъективно. Что она делает? Попробую расписать, основываясь на том, что я прочёл. Пусть будут 3 корутины. Запустим #2 из #1. Обычно третью корутину из второй запускаем с помощью coroutine.resume — но после выскакивания из #3, управление будет в #2. С помощью библиотеки же можно вызвать coroutine.resume другой корутины, при этом стопнув текущую. То есть при вызове из #2 управление будет передано в #1, откуда затем сразу же пойдёт оно в #3, а потом, когда #3 стопнется, вернётся в #1. ...Зачем только? P. S. Пример совершенно непонятен. Изменено 23 февраля, 2018 пользователем Fingercomp 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах