Я пытаюсь прочитать ввод пользователя в консольном интерфейсе в приложении Lua. Однако я не хочу останавливать выполнение программы, как предполагает название. Использование read() будет мешать нормальной обработке текущих событий и обновлению интерфейса при вводе пользователем.Чтение ввода пользователя без остановки выполнения
Лучшее решение, которое я мог придумать, состоял в том, чтобы сохранить временную переменную. Я применяю любой пользовательский ввод, который не является функциональным ключом. Однако мой обработчик событий возвращает scancodes, и я не знаю, как их сопоставить с кодами ASCII, не поддерживая таблицу для каждого ключа, чего я действительно хочу избежать.
Любые идеи?
Редактировать Чтобы дать пример того, что я имею в виду:
function read_input()
local input = read()
do_something_with(input)
end
while true do
e,param1,param2,param3 = os.pullEvent()
if (e=='key' and param1=='201') then
read_input()
elseif (e=='something_else') then
do_something_else()
end
end
Как вы можете видеть, пользователь может в некоторой точке земли в функции требует ввода данных пользователя. В то время как этот ввод сделан, у меня не может быть никаких других (на основе событий) функций программы, которым это препятствует.
Откуда вы получаете эту функцию 'os.pullEvent'? –
Его computercraft. minecraft mod – SReject
Попробуйте использовать 'coroutines', или если minecraft предоставляет что-то подобное таймер-обработчику событий. – hjpotter92