Эта программа не работает с терминала, но работает в зеробране

x = 10
io.write("Enter the name of the variable you want to be printed: ")
index = io.read()
f = loadstring("return " ..  index)
print(f())

Приведенный выше код дает эту ошибку при использовании в терминале, но не при запуске в студии Zerobrane.

main.lua:874: attempt to call a nil value (global 'loadstring') 
stack traceback: 
    main.lua:874: in main chunk [C]: in ? 

Это важно, потому что я пишу lua в emacs. как я могу исправить эту проблему? Нужна помощь.


person oleg harput    schedule 29.11.2020    source источник
comment
Опишите, как это не работает. Он закрывается после того, как вы что-то вводите?   -  person Spar    schedule 29.11.2020
comment
это дает эту ошибку, которая не выходит в зеробране: lua: main.lua:874: попытка вызвать нулевое значение (глобальная 'loadstring') трассировка стека: main.lua:874: в основном фрагменте [C]: in ?   -  person oleg harput    schedule 29.11.2020
comment
Lua, который вы используете с терминала, вероятно, Lua 5.3 или выше. loadstring устарело в Lua 5.2 и удалено в 5.3. Проверьте свою версию с помощью lua -v   -  person Spar    schedule 29.11.2020
comment
Луа 5.3.3. Большое спасибо.   -  person oleg harput    schedule 29.11.2020


Ответы (1)


Ваша терминальная версия Lua выше, чем Lua в ZeroBrane.

Lua 5.3 удалил loadstring, и теперь он существует как load.

person Spar    schedule 29.11.2020