scite не показывает вывод программы во всплывающем окне Ubuntu

Я запускаю скрипт lua через scite в Ubuntu 12.04. Когда я выполняю программу io.read. пример: (каждая команда находится на отдельной строке)

io.write("Please enter a number: ")
user_input = io.read()
print(user_input)

Когда я запускаю программу, я не получаю отдельного всплывающего диалогового окна с запросом ввода пользователя.

Я получаю в правой части кода следующий вывод:

> lua5.1 "io_examples.lua"
Please enter a number: nil

Я знаю, это может показаться глупым, но как мне получить всплывающее окно вывода, запрашивающее ввод пользователя?


person user174743    schedule 05.08.2013    source источник


Ответы (2)


nil, возвращаемый io.read, может указывать на то, что во время чтения произошла ошибка. Вы можете проверить это, окружив оператор io.read утверждением:

local user_input = assert(io.read())

or

local user_input = assert(io.read("*number")).

Мое первоначальное предположение состоит в том, что вы получили: неверный файловый дескриптор, вызванный тем, что стандартный ввод (stdin) не установлен.

Более подробную информацию можно найти здесь:

http://www.lua.org/pil/21.1.html

http://www.lua.org/pil/8.html

person Enigma    schedule 06.08.2013
comment
Спасибо за ответ! Я попробовал оба варианта, и вот что получилось: io.write(Пожалуйста, введите число:) 2: утверждение не удалось! трассировка стека: [C]: в функции 'assert' io_examples.lua:2: в основном чанке [C]: ? Пожалуйста, введите число: ›Код выхода: 1 - person user174743; 06.08.2013
comment
Оба предложения дали один и тот же результат: Спасибо за ответ! Я попробовал оба варианта, и вот что получилось в обоих случаях: lua5.1 io_examples.lua lua5.1: io_examples.lua:2: утверждение не удалось! трассировка стека: [C]: в функции 'assert' io_examples.lua:2: в основном чанке [C]: ? Пожалуйста, введите число: ›Код выхода: 1 - person user174743; 06.08.2013
comment
Меня смущает то, что программа выполняется, но не позволяет пользователю что-либо вводить. Как мне сделать так, чтобы программа ждала, и когда пользователь действительно вводит число или что-то еще, программа завершала выполнение? Есть ли другая программа, которую мне нужно установить, кроме scite, чтобы разрешить интерактивное окно? - person user174743; 08.08.2013

Как я, наконец, заставил программу работать правильно, так это запустить ее через терминал Ubuntu. Мне просто нужно было перейти в каталог, где находилась программа, а затем ввести «lua . Я не получил аккуратного всплывающего окна, но код выполнился правильно.

person user174743    schedule 08.08.2013