Я хочу что-то вроде этого:
local co1 = coroutine.create(function()
local evt, _, _, nm, arg1 = event.pull("thread_msg", 2)
-- Pull a "thread_msg" event.
if(nm == coroutine_name)then
print(evt, arg1) -- Print the event name and the argument sent by "thread_msg"
end
end)
coroutine.resume(co1)
event.push("thread_msg", "co1", "") -- Sends a message to the coroutine
Мне нужно имя сопрограммы. Событие «thread_msg» отправляет всем запущенным сопрограммам, то же самое для coroutine.send. Мне нужно получить имя сопрограммы внутри сопрограммы.
Работа с opencomputers с mc версии 1.12.2 forge. Архитектура процессора lua 5.3. Спасибо.
Спасибо, это поможет мне сделать модуль потоковой обработки для операционной системы. Скоро опубликую на гитхабе. Я делаю эту ОС, потому что мне нужна система, похожая на Linux, а обычный редактор — это мусор.
Для чего используется «режим» в нагрузке?
Двоичный файл «mode» («b») невозможен с функцией сопрограммы (я пытался, и это выдает ошибку).
code.co
— это «t» (текстовый фрагмент), а режим по умолчанию — «bt», поэтомуload()
проверяет, чтоcode.co
является «текстовым» или «двоичным» фрагментом. Но это нормально при использовании explizit «t» как «mode» дляcode.co
. Двоичный фрагмент создается с помощьюstring.dump()
с функцией в качестве аргумента.Ошибка стиля функции, которую я должен исправить, заключается в том, чтобы сделать аргументы локальными в сопрограмме, иначе каждая новая созданная (с load(code.co,'newname')) сопрограмма переопределяет глобальные аргументы, что, вероятно, нежелательно.
Это не проблема, я уже знаю, но все равно спасибо, все, что я иногда делаю, это пью этот сладкий сочный код и вставляю его в свои программы, что также означает, что я не читаю код, так что да, я должен отлаживайте в течение нескольких часов, чтобы исправить: P. Но не называйте меня пыхтителем, пожалуйста, я не заслуживаю тюрьмы за пыхтение, я обещаю, что не буду воровать много кода :,^(
Да, вы заработали Chuggy Batch ;-P - И имейте в виду, что приведенный выше код «играет без таблицы аргументов», построенной из трех точек и из них. Эта таблица, содержащая аргументы из первого вызова сопрограммы, нужна вам для дальнейших действий. Я предполагаю, что
args[0]
содержитdebug.getinfo(1).source
, как вC
и других языках. Тогда вы не будете каждый раз копировать более длинныйdebug.getgetinfo(1).source
туда, куда хотите. Момент, когда я поместил его в приведенный выше код :-)